Tôi là ột ngư i thực sự lư i bi ng bẩm sinh Tôi không lư i bi ng trong ý nghĩa à tôi th ch ngồi và không là gì cả ngày, nhưng đúng hơn là tôi ghét là những việc lặ lại nhiề lần. Bất cứ khi nào tôi cảm thấy bản thân ình là điề gì đó rất nhà ch n, điều đầ tiên xuất hiện trong tâ tr phải có một c ch đ tự động hóa điều này M y t nh là con ngựa là việc tuyệt v i. Chúng có th chạy ngày này q a ngày kh c và không bao gi hàn nàn. Trong sự lư i bi ng vô hạn của tôi, tôi đang liên tục tạo ra c ch là cho y t nh là việc ch chỉ hơn đ tôi có th có th i gian đ là những việc quan trọng hơn. . . như vi t cuốn ch này cho bạn. Cho dù bạn đang tạo m i hoàn toàn cho kịch bản hay thực hiện một số mức độ cấ thông tin tự động trong q khứ bằng c ch sử dụng ngôn ngữ kịch bản kh c, bạn sẽ thực sự yê th ch Windows PowerShell. Nó c ng cấp cho ngư i dùng indow một vỏ thực sự cung cấp điện cùng ột hệ thống Windows à chỉ ngư i trong cộng đồng Unix Linux th ch trư c đó Micro oft đã bỏ ra nhiề n và cố g ng đ là Windows dễ dàng hơn đ sử dụng, và trong q trình là như vậy đã thực hiện một số điều kh bực bội cho ngư i sử dụng. (Hãy nh rằng khi Microsoft đã cố g ng đ buộc bạn phải sử dụng wizARDS) Windows PowerShell là tậ h l n c c ngư i sử dụng bi t những gì họ muốn và không ốn hải ngồi cả ngày dài bấ vào c c hộp thoại đ hoản thành công việc.
Trang 1Phiên bản Windows PowerShell ự h t tri n ti theo 14
Khởi động Command Shell của Windows PowerShell 15
Giao diện đồ họa indow Power Shell t ch h Shell (ISE) 17
C T 19
C nhân hóa c ch nhìn và cảm nhận command shell 19
Tì hi c ch là việc của Windows PowerShell ISE 24
Trang 2C 45
Cmdlets: The Little Commands That Could! 45
Trang 3Sử dụng những Pipeline đ h lý hóa những lệnh của bạn 90
Những tương t c của Windows PowerShell v i WMI 107
Sử dụng cú h SQL ở MI đ lấy QL
Tì ki c c bản ghi ự kiện
Thi t lậ ngư i sử dụng bằng I er onation
Using the New WMI Cmdlets
Making things happen with Invoke-WMIMethod
Xóa những đối tư ng đang ử dụng Remove-WmiObject 119
Cài đặt những thuộc t nh MI ử dụng Set-WmiInstance 121
C 9 Đ light
Phân biệt giữa e ty và n ll tring 122
Đơn giản hóa bằng c ch ử dụng Here-Strings 123
Trang 4T ch ch ỗi 126
Tạo Regex đơn giản sử dụng c c ký tự chữ 132 Thực hiện tì ki động sử dụng c c bộ ký tự 134
Sử dụng sửa đổi đ x c định tùy chọn hoặc lặ đi lặp lại trình tự 135
Trang 5Tạo mảng 152
Having Some Fun with the File System 166
Di chuy n xung quanh hệ thống tập tin 166
Là việc v i ngày trong indow Power hell 185
Thi t lậ ngày và th i gian theo một định dạng cụ th 185
Trang 6Thực hiện c c t nh to n về ngày 188
Ki m tra th i gian mặc dù là ti t kiệm th i gian ban ngày 191
Tì hi u chức n ng của c c hà nâng cao
Trang 7Sử dụng công việc chạy nền 215
Sử dụng Windows PowerShell mọi nơi 225 Lấy những thứ bạn cần cho remote commands 225
K t nối PowerShell v i 1 y t nh kh c 226
Hi u về ch nh ch, hiện trạng, quyền ư tiên 232
Trang 8C N ữ ỗ
Bảo vệ chống lại đầ vào không ong ốn 244
Tì ra ột lỗi logic không ch nh x c 245
Là việc v i hệ thống bảo vệ của bạn 250
Lấy danh ch tất cả c c đi dừng 258
Vô hiệ hóa và k ch hoạt đi dừng 258
C N m vụ i u khi n: Vậ ộ h th ng
Trang 9K t nối t i windows registry 280
Duyệt registry sử dụng Powershell 280
Sử dụng Micro oft win3 Regi try ey đ truy cập Registry 283
Ghi key và val e ử dụng PSDrive 286
Ghi registry value sử dụng Microsoft.win32.RegistryKey 287
Đổi tên và xóa regi try ey và val e 288
Đổi tên và xóa regi try key và val e ử dụng PSDrive 289
Sử dụng Micro oft in3 Regi try ey đ xóa regi try key values 289
C 0 N D
Gi i thiệ ơ bộ về Active Directory Primer 291
Truy vấn c c đối tư ng và th ộc t nh 293
Dyna ically obtaining a er’ di ting i hedNa e 301
Tì ra đối tư ng Raw ADSI sử dụng psbase 304
C
Bảo vệ thông q a xec tionPolicy 308
Trang 10Việc đòi hỏi một chứng chỉ từ tổ chức CA 314
Định nghĩa globally open ports (cổng mở toàn cầu)
Tì hi u sự kh c nha giữa CreateObject và GetObject 342
Là q en v i Windows Firewall COMmander 365
nabling và di abling indow Firewall
Trang 11Lấy thuộc t nh vi ible 368
K t nối đ chia sẻ y in trên ạng
Ng t k t nối chia sẻ y in trên ạng
Chuẩn bị dữ liệu cho c c công cụ b o c o kh c 397
7: The Part of Tens
C 6 C
Trang 12Là q en v i c c đối tư ng bằng c ch ử dụng get –member 408
Sử dụng set – location đ di chuy n 408 Đọc tậ tin v n bản v i get – content 408
Vi t vào tập tin bằng c ch ử dụng out – file 409 Leveraging MI (công cụ quả trị windows) 409
Sử dụng new – object đ tạo c c đối tư ng m i 410 Chọn lựa đối tư ng v i select – object 410
T i bộ ư tập v i v i foreach-Object 411
Sử dụng where – object đ ki o t đư ng dẫn 411
C ầ ử ụ
hông cho hé c c kịch bản thực thi 413
Sử dụng dấu phẩy v i tham số khi gọi một hà 414 hông x c định chức n ng trư c khi sử dụng 416
Xử lý đư ng dẫn dữ liệu sang dạng chuỗi 417
Cố g ng đ thực hiện q nhiều lệnh trong một đư ng dẫn lệnh 423
hông ử dụng l p NET Khi Available 425
Trang 13Phần 1: T ower Shell 2
C CƠ BẢN VỀ INDO O ER
N
Sự ra đ i và h t tri n của windows powershell
Cài đặt windows powershell 2
Tương t c v i giao diện dòng lệnh của windows powershell
Sử dụng ISE (Integrated Scripting Environment)
Tôi là ột ngư i thực sự lư i bi ng bẩm sinh Tôi không lư i bi ng trong ý nghĩa
à tôi th ch ngồi và không là gì cả ngày, nhưng đúng hơn là tôi ghét là những việc
lặ lại nhiề lần Bất cứ khi nào tôi cảm thấy bản thân ình là điề gì đó rất nhà
ch n, điều đầ tiên xuất hiện trong tâ tr " phải có một c ch đ tự động hóa điều này!" M y t nh là con ngựa là việc tuyệt v i Chúng có th chạy ngày này q a ngày
kh c và không bao gi hàn nàn
Trong sự lư i bi ng vô hạn của tôi, tôi đang liên tục tạo ra c ch là cho y t nh
là việc ch chỉ hơn đ tôi có th có th i gian đ là những việc quan trọng hơn như vi t cuốn ch này cho bạn
Cho dù bạn đang tạo m i hoàn toàn cho kịch bản hay thực hiện một số mức độ
cấ thông tin tự động trong q khứ bằng c ch sử dụng ngôn ngữ kịch bản kh c, bạn
sẽ thực sự yê th ch Windows PowerShell Nó c ng cấp cho ngư i dùng indow một vỏ thực sự cung cấp điện cùng ột hệ thống Windows à chỉ ngư i trong cộng đồng Unix / Linux th ch trư c đó Micro oft đã bỏ ra nhiề n và cố g ng đ là Windows dễ dàng hơn đ sử dụng, và trong q trình là như vậy đã thực hiện một số điều kh bực bội cho ngư i sử dụng (Hãy nh rằng khi Microsoft đã cố g ng đ buộc bạn phải sử dụng wiz-ARDS) Windows PowerShell là tậ h l n c c ngư i sử dụng
bi t những gì họ muốn và không ốn hải ngồi cả ngày dài bấ vào c c hộp thoại
Trang 14th hoàn thành ọi thứ bạn cần là n u chỉ sử dụng c c hương thức sẵn có hay không?
Ch c ch n mọi thứ bạn cần là trong window thì đề có th đư c là bởi indow Shell or SH cri t Tôi đã ử dụng nó trong nhiề n à không có vấn đề gì? Và lần đầ tiên tôi nghe thấy thì indow PowerShell đã đư c h t tri n 1 vài n trư c (khi à nó vẫn còn đư c gọi v i tên là Monad) Tôi tin rằng đây là ột c ch i
mẻ và thú vị đ là ọi thứ
S y đổi từ
indow PowerShell đư c thi t k bởi Jeffrey P Snover vào th ng 8 n
v i tên là Monad Nó đư c lấy từ tên Monad Manife to nó đư c thi t k như là nền tảng
ch ng dành cho ự tự động c c công việc quản trị Nó đã đư c thử nghiệ và ki m chứng trong Unix
Trong command shell, bạn thực hiện một hành động à ình uốn bằng việc thao
t c v i k t quả là đoạn text phi cấ trúc của một lệnh trư c đó đ đạt đư c k t quả hoặc
sử dụng lệnh kh c Trong ột co and hell thông thư ng của indow như v dụ, bạn
có th sử dụng tuần tự lệnh a đ tì ra k t quả n như ing www.whitehouse.gov sẽ trả về c c re ly nào đó
ing www whiteho e gov | find “Re ly”
Trong v dụ, bạn có th truyền k t quả của lệnh ping www.whitehouse.gov sang cho lệnh find bởi bạn muốn lọc dòng k t quả chứa từ “Re ly” i đư c hi n thị Monad giả quy t c c hạn ch trong hương thức truyền thống bằng c ch đặt ra hư ng ti cân
m i cho việc tạo c c dòng lệnh bằng c ch trong kh ôn khổ >N T và ô hình đối tư ng của nó Monad là đư c điề này bằng c ch định nghĩa ột ô hình tự động nơi à c c lệnh gọi là c dlet (hay c c co and-let) có th truyền dữ liệu cho lệnh kh c như là c c đối tư ng có cấ trúc chứ không hải là c c đoạn v n bản lỏng lẻo
Mục đ ch của tôi không chỉ cho bạn bi t về lịch sử của Windows PowerShell à giú bạn hi rõ lý do c ch thức à indow Power Shell thực hiện Khi bạn sử dụng Windows PowerShell, bạn phải chú ý như v dụ cú h lệnh có th tương tự Unix Điề này không hải sự trùng h à dựa trên ngôn ngữ của c c hell trong Unix đây không hải sự ngẫ nhiên à là ự thừa hưởng từ ngôn ngữ ô hỏng Unix mạnh mẽ và
N T PowerShell là ột trong những ngôn ngữ kịch bản dễ sử dụng và rất trực quan
Trang 15N u bạn muốn đọc về Monad Manife to khi nó x ất hiện vào n bạn có th
(windows-powershell.aspx)
http://blogs.msdn.com/powershell/archive/2007/03/19/monad-manifesto-the-origin-of- M Windows PowerShell 1.0
Windows PowerShell mang lại sự tương t c tốt nhất giữa indow Shell và ức mạnh của c c SH cri t Nó tạo nên ôi trư ng dòng lệnh hong hú ạnh mẽ à bạn có th chạy c c lệnh PowerShell m i gọi là C dlet Chúng là c c lệnh dựa trên l p
N T à giú bạn dùng c c kịch bản ở mức linh hoạt hơn trong khi vẫn cho hé bạn truy cập ở l p thấ hơn là giao diện chương trình ứng dụng (APIs_Application Progra ing Interface ) thông q a c c wra er N T
Windows PowerShell 1 là hiên bản đầy đủ đầ tiên của Windows PowerShell,
và nó cần nhiề thành hần khóa đ có th sử dụng nó h t tri n chậm do một số lý do
- Nó không đư c xây dựng s n trên c c hệ điề hành indow vì th à
c c nhà q ản trị n u muốn sử dụng nó phải bỏ thê th i gian tiềm hi u , triền khai PowerShell
- C c nhà q ản trị đã ki m chứng c c ngôn ngữ kịch bản đang hiện có và
đã không cảm thấy sự cần thi t cho đ sử dụng một shell m i đ hoàn thành c c công việc tương tự nhau
- Như là ột sản phẩm m i, phải mất một khoảng th i gian đủ đ b t đầu
sử dụng nó trư c khi trở nên thành thạo v i Windows PowerShell
- C c nhà h t tri n của Micro oft đã b t đầu thảo luận về thuận l i của indow PowerShell 1 và chẳng bao lâ đã t ng ra c c ản phẩ như Micro ofe xchange 7 và Sy te Center O eration Manager (SCOM còn gọi là MOM)
Sa đó PowerShell 1 đã đư c h t hành v i indow Server 8 Chúng ta ẽ thấy rất thú vị về điề này bởi nó đã bi n indow PowerShell thành chủ đạo
II ê n Windows PowerShell 2.0
Mặc cho sự h t tri n chậm của Windows PowerShell 1, Một sự h t tri n Windows PowerShell của cộng đổng nổi lên và đặt nó từng bư c theo kịp th i đại C c nhà h t tri n Windows PowerShell của Micro oft đã đưa ra nhiều phản hồi và chỉ tr ch
đ n c c sản phẩ đó và hứa hẹn sẽ sản xuất một sản phẩm m i xứng đ ng hơn đó là Windows PowerShell 2.0
Điề gì i trong indow PowerShell à là cho nó trở nên đặc biệt Đây là một số t nh n ng i trong Windows PowerShell:
- PowerShell t xa Cho hé thực thi c dlet và c c kịch bản từ xa
(Chương 15)
- Cá c ch ộ n n: sự cải ti n này cho hé bạn chạy c c
Trang 16- Cá p cao c c lệnh c dlet đư c vi t bởi C# và V N T ạn
có th vi t c c lệnh cmdlet giả sử dụng windows PowerShell
- N ữ dữ li u có th chia nhỏ c c đoạn code từ dữ liệ đ dễ dàng
chia sẻ
- Sự k t n i b n c c kịch bản có th hù h p v i nhiề ngôn ngữ đ dễ
dàng thực thi
- Debug k ch b n: debug thực sự Bạn có th thi t lậ c c đi m dừng
trong c c kịch bản vì th bạn có th chia nửa q trình thực thi đ tì xe ch yện
gì đang diễn ra trong kịch bản Chương 17
và kịch bản Windows PowerShell có th chạy trong một runspace
- Runspace pools là ột trong những c ch đ quản lý ự thực thi lệnh
bằng nhó c c r n ace cùng nha
- í p k ch b n ISE: Một hiên bản đồ họa có thê
một số t nh n ng i như nhiề kh ng tab đ là việc v i nhiều kịch bản cùng một lúc
- Xem k t qu i dạ i: Bạn có th tạo ra k t quả của lệnh v i
dạng bảng nơi à bạn có th s p x tì ki và nhó c c k t quả
- Cá I i trong PowerShell: N u bạn là ột nhà lậ trình viên
bạn có th sử dụng t nh n ng i này đ truy xuất trực ti p trong PowerShell sử dụng c c API
- Một s c i ti n nhỏ á nh sẵ ó : Một số
bi n đư c thê vào cho c c lệnh sẵn có đ t ng c c chức n ng
III C t Windows PowerShell 2
indow PowerShell là ột sự thay th cho indow PowerShell 1 vì vậy chúng không th tồn tại ch ng trong cùng 1 hệ thống indow PowerShell có th
đư c cài đặt trên cả nền hệ thống x86 và x64 c ả Windows XP with SP3, Windows Server 2003 with SP2, Windows Vista v i SP1, Window Server 8 và indow 7
4 bư c đ cài indow PowerShell
Trang 17b Download và cài đặt Microsoft NET Framework 3.5.1
cầ cho IS ( ôi trư ng t ch h p kịch bản) và O t-GridView
c Download và cài đặt WinRM 2.0 CTP3
l i cho c c t nh n ng điều khi n từ xa và ch độ nền
d Download và cài đặt Windows PowerShell 2
5 Kh ộng Command Shell của Windows PowerShell 2
Gọi một c ch đơn giản indow PowerShell là PSH Ta có th khởi động trang soạn thảo lệnh b ng c ch
Start➪All Programs➪Windows PowerShell V2➪Windows PowerShell V2 Khi bạn dùng indow Vi ta bạn cần clik chuộ phải và chạy ở quyền
Ad ini trator Hay không cần clik chuột phải khi bạn đã có q yền Administrator
Khi Windows PowerShell 2 khởi động thì trang soạn thảo lệnh đư c mở Nó giống hell dòng lệnh của c c hiên bản indow cũ ngoại trừ theo mặc định nền là
à xanh và dấu nh c đư c đặt ở đầu bởi PS Bạn có th chạy 1 vài lệnh DOS (như DIR và CD) Có th thực thi c c ứng dụng dòng lệnh sẵn có như XCOPY X
PSH thực thi c c ứng dụng dòng lệnh thông thư ng nhưng c c lệnh CD và DIR
là c c alia cho lệnh cmdlet m i Đây ch nh là ng yên nhân tại sao k t quả của DIR trông như ột bit kh c ạn không th sử dụng lựa chọn cũ như DIR / v i DIR Bởi
vì v i lệnh c dlet thì DIR đư c map sử dụng c c bi n kh c nha
Trang 18- Cửa sổ O t t nơi hi n thị k t quả của c c lệnh hoặc c c kịch bản
- Cửa sổ Co and Có th nhập c c lệnh như là ột trang soạn thảo lệnh bình thư ng
Bạn có th tạo c c kịch bản PSH khi chọn File➪New đ hi n thị cửa sổ soạn thảo
và cửa sổ hi n thị k t quả N u bạn đang là việc trên nhiều kịch bản, một giao diện
đư c hi n thị bạn có th dễ dàng ch y n qua lại giữa c c cri t
Bạn d dàng chay 1 cri t dang ở dơn giản bằng c ch nhấn vào nút RUN (Hình
Trang 19soan thảo tiê ch ẩn , t nh n ng là nổi bật cú h là là cho chỉnh ửa script của bạn
ột chút dễ dàng thấy hơn Phần tốt nhất là trình gỡ lỗi có th dễ dàng ti cận từ en Deb g ( ao gồ c c kh i niệ gỡ lỗi trong ch yên â trong chương 17 ) IS là ột công cụ t yệt v i cho c c v n bản chạy và gỡ lỗi c c kịch bản của bạn trong ột ôi trư ng dễ ử dụng Hãy y nghĩ về nó như ột Vi al St dio th nhỏ cho indow PowerShell Mặc dù cửa ổ IS Scripts đư c thi t k chủ y đ vi t và chỉnh ửa Scripts ột trình oạn thảo v n bản th ần túy vì vậy bạn có th ử dụng nó đ ở hoặc
c c tậ tin và c c tậ tin XML
Trang 20CHƯƠNG TH O TÁC VÀ ỆNH TẮT TRONG ÔI TRƯỜNG
N
Tì hi u về lệnh PSH
Thay đổi profile của PowerShell
Thao t c v i ôi trư ng t ch h p kịch bản (ISE) của Windows PowerShell
V dụ tôi sử dụng nó là việc v i một quản trị viên Windows ngư i hi m khi sử dụng
c c h t t bàn h Ctrl + C và Ctrl + V đ ao ché và d n c c mục Ông l ôn l ôn
sử dụng hương h ao ché và d n bởi vì ông cảm thấy ông ki o t nhiề hơn Tôi cũng sử dụng đ là việc v i một ngư i đã cố g ng là tất cả mọi thứ bằng c ch ử dụng bàn h bất cứ khi nào có th và tr nh xa con chuột như th nó là bệnh dịch Bất cứ điều
gì hương h bạn sử dụng đề tốt - sau cùng, nó l ôn l ôn tốt nhất đ tổ chức công
Tôi nghĩ rằng trư c khi b t đầu là việc v i Windows PowerShell, bạn có th tì thấy
nó hữ ch đ bi t c ch kh c nha đ tùy chỉnh ôi trư ng tốt nhất hù h p v i phong
c ch của bạn Tôi cho bạn thấy kỹ thuật kh c nhau ti t kiệm th i gian, giú bạn là việc nhanh hơn Điề này là bạn thú vị?
I Cá â ó á m nhận của command shell
T ổ ữ
T ổ í c cửa sổ
T ổ ê cửa sổ
Trang 21 Cá
ê
Bạn có th dễ dàng thay đổi à nền và à hông chữ hù h p v i sở
th ch của bạn V dụ có th thay đổi à nền là à đỏ thẫ và hông chữ nền là xanh bằng việc gõ lệnh sau ở dấu nh c lệnh PSH
$Ho t UI RawUI ackgro ndColor= “ agenta”
$Host.UI.RawUI Foregro ndColor= “bl e”
$Ho t là ột bi n đặc biệt tham chi đ n đối tư ng hiện hành ạn g n
UI.RawUI.ForegroundColor của đối tư ng
í ỡ ê ửa sổ của bạn
Đối tư ng $Host.UI.RawUI rất hữ ch ạn có th truy vấn hoặc thao t c
v i c c th ộc t nh hụ q a đối tư ng này đ t c động t i sự xuất hiện h điều khi n ngoài à hông nền và à nền Có th thay đổi k ch thư c cửa sổ k ch thư c vùng đệ và thậ ch thay đổi tiê đề của cửa sổ
ch thư c vùng đệ là chiều rộng và chiều cao của cửa sổ còn lại trong bộ
nh nơi à ẽ ẩn khi k ch thư c cửa sổ là ột phần của bộ đệ Vì điề này à
k ch thư c cửa sổ phải nhỏ hơn k ch thư c vùng đệm Chiều cao của vùng đệm rất quan trọng vì về bản chất thì nó điều khi n thanh cuốn của cửa sổ khi chạy nhiều lệnh Chiề cao vùng đệm mặc định là 3 tức là vùng đệ có th giữ lên t i
3 dòng của k t quả xuất ra trư c khi nó b t đầu hủy bỏ c c đầu nhậ cũ
Bạn thay đổi k ch thư c cửa sổ hay vùng đệm bằng việc thay đổi gi trị của thuộc t nh fferSize hoặc WindowSize của $Host.UI.RawUI N u muốn bi t gi trị hiện tại, chạy c c lệnh PSH
$Host.UI.RawUI.BufferSize
$Host.UI.RawUI.WindowSize
K t quả của hai lệnh này là hi n thị chiều rộng và chiều cao theo dạng bảng
ây gi bạn có th tạm th i thay đổi k ch thư c cửa sổ:
$Host.UI.RawUI.WindowSize.Width = 110
$Host.UI.RawUI.WindowSize.Height = 40
Mặc dù PSH không giải th ch k ch thư c cửa sổ không thay đổi và n u bạn truy vấn lại gi trị của WindowSize, bạn có th tì thấy gi trị cũ Theo c ch này
Trang 22tư ng nên cần tạo một đối tư ng ki đó và thi t lập thuộc t nh độ rộng và chiều cao a đó g n gi trị m i này cho indowSize
$size = $Host.UI.RawUI.WindowSize
$size.Width = 100
$size.Height = 25
$Host.UI.RawUI.WindowSize = $size
Gi trị của indowSize đư c lư trong bi n $size
N u muốn thay đổi k ch thư c vùng đệ c ch đơn giản là thay th WindowSize cho BufferSize
Chiều rộng và chiều cao của cửa sổ và vùng đệ không đư c đo bởi pixel, chiều rộng đo bởi số k tự có trên 1 dòng còn chiề cao ch nh là ố dòng nó có th chứa
Hi n th ê của cửa sổ
Có lẽ thuộc t nh dễ nhẩt và hữ ch nhất đ thay đổi là th ộc t nh indowTitle Bạn có th thay đổi tiê đề bằng một tên kh c hay hơn như là “ indow PowerShell
R le ” khi chạy dòng lệnh sau:
$Ho t UI RawUI indowTitle=” indow PowerShell R le !
ây gi bạn có th hân biệt một cửa sổ PSH v i c i kh c bằng c ch đọc nhanh tiê đề của cửa sổ
Trang 23II T ổi profile của PowerShell
Những thi t lập về à và k ch thư c ở trên chỉ dụng tức th i hi đóng cửa sổ lại thì không còn t c dụng ở những lần mở sau N u muốn c c thi t lậ này đư c mặc định mỗi khi mở một PSH shell thì rofile cri t ch nh là ột giải h Profile cri t là một kịch bản đặc biệt chạy vào ọi lúc khi bạn mở một PSH command shell N nó không tồn tại theo mặc định, PSH sẽ bỏ q a và di ch y n nó
Bạn có th tì cấ hình của bạn đang chạy bằng lệnh : $profile
Microsoft.PowerShell_profile.ps1 trong một folder indow PowerShell trong thư ục
My Documents của bạn V dụ trên y trạ nó trả về C:\Documents and Settings\steguis.MONKEY\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
IS có kịch bản profile của nó là vị tr ặc định giống như kịch bản rofile thông thư ng, ngoại trừ khi nó đư c gọi là Micro oft PowerShellIS _ rofile 1
N u bạn đã có ột profile, mở nó lên bằng Notepad, tạo một file k tự trống sử dụng Notepad ở vị tr đư c trỏ bởi $ rofile Profile này là ột kịch bản đ thực thi bất cứ khi nào 1 hell đư c khởi động
Trư c đó bạn có th tạo file profile, tạo folder WindowsPowerShell trong fold My Documents n nó không tồn tại
Bạn có th dùng code PSH n u bạn muốn thực thi mỗi khi một hell đư c mở trong profile của bạn N u muốn hiệu chỉnh giao diện có th dùng đoạn code sau:
$Shell = $Host.UI.RawUI
$Shell indowTitle=”PowerShell Obey Me”
$Shell ackgro ndColor=” hite”
$Shell Foregro ndColor=” l e”
Trang 24$Shell.BufferSize = $size
Clear-Host
Lư file này và a đó ở một cửa sổ PowerShell Trừ khi Windows PowerShell
đư c cài đặt và cấ hình lại bởi ngư i kh c thì ẽ xảy ra lỗi như hình
Điề này có nghĩa là gì? Lỗi này là hương h của Micro oft giú bạn q an t
C c loại virus sẽ b t đầu lan rộng khi Microsoft b t đầ dụng Windows Scripting Host (WSH) v i window hi cài SH đư c cài đặt, bạn sẽ tự động có khả n ng chạy bất cứ kịch bản SH và nhiều kẻ xấ đã l i dụng thuận l i này đ tạ ngưng ngư i dùng khi chạy code Mặc định indow PowerShell không ẽ không chạy bất cứ kịch bản nào trừ khi nó đư c x c thực sử dụng một chứng chỉ bởi một Certificate Authority hoặc một chứng chỉ thông thư ng sử dụng Microsoft NET Framework Software Development Kit (SDK)
Hãy hình d ng n u Windows PowerShell tự động thực thi một kịch bản rofile à không ki tra Ngư i vi t virus hoặc wor có th tạo và thay th kịch bản profile PSH của bạn và a đó khi bạn mở PSH thì kịch bản rofile c t nh ẽ tự động gây lỗi
N u muốn xe rofile là việc như th nào bạn có th thay đổi trạng th i mặc định của PSH và cho hé và ô hỏng hệ thống cục bộ nhưng yê cầ c c kịch bản phải đư c chạy từ vị tr kh c( như là c c driver ạng) đ yê cầu một chữ k Có th thay đổi trạng th i bằng dòng lệnh sau:
Set-ExecutionPolicy RemoteSigned
Theo mặc định ch nh ch thực hiện là Re tricted có nghĩa là không kịch bản nào có th chạy đư c và chỉ c c lệnh tương t c đư c cho hé hi thay đổi ch nh
Trang 25bản cục bộ Đóng cửa sổ PSH và ở một shell m i có th xe tiê đề à và
k ch thư c đư c thay đổi như th nào
Chú ý Lệnh Clear-Ho t đư c thê vào ở cuối mỗi kịch bản rofile đ xóa tr ng
àn hình Rất hữ ch khi có q nhiều thứ trên àn hình và ốn xóa nhanh nó Cũng
có th dùng lệnh cl đ thực thi
III T á c của Windows PowerShell ISE
indow PowerShell IS giú là việc dễ hơn v i Windows PowerShell Khởi
động PowerShell ISE bằng c ch vào Start➪All Programs➪Windows PowerShell
V2➪Windows PowerShell V2 Nó đư c thi t k dựa trên c c kh i niệ indow nó
không q hức tạ T y nhiên ột số cải ti n không rõ ràng V dụ đưa ra tr giú
nhanh hơn hi bạn không hi u về lệnh Cmdlet bạn muốn đư c tr giú nhấn F1 và
Windows sẽ hi n thị cú h lệnh Cmdlet cũng như c c thông tin kh c về lệnh này
N u bạn muốn thấy tên ột C dlet trên ột trong c c cửa sổ và cửa sổ đó hoạt
động (v dụ, cửa sổ kịch bản hay cửa sổ lệnh), nhấn F1 đ có tr giú về cmdlet hoặc
chọn tên c dlet đầ tiên
Trong cửa sổ lệnh này n u muốn nhập nhiều lệnh trư c khi chạy chúng trong
Windows PowerShell, bạn có th nhấn Ctrl+ nter đ đi đ n dòng ti à không thực thi
lệnh trên cửa sổ đó hi đã ẵn àng bạn có th thực thi lệnh 1 c ch t ần tự bằng c ch
chọn nút r n à xanh hoặc nhấn Enter
N u muốn chỉ thực thi một phần của 1 kịch bản hoặc một lệnh đơn của một kịch
bản, bạn có th là điề này bằng c ch là nổi bật phần muốn thực thi( Q trình đ nh
dấ c c ký tự hoặc c c tên lệnh bằng c ch đảo à trên àn hình) và nhấn nút R n Chỉ
có hần kịch bản đư c là nổi bật m i đư c thực thi
T nh ISE
Giao ti dòng lệnh indow PowerShell có ột bi n $ho t đư c sử dụng đ truy
cập t i đối tư ng con ole IS có ột bi n $ i e đ truy cập t i ho t IS Vì có th truy
cậ và điều khi n ISE qua bi n $ i e nên có th tùy chỉnh bảng à của IS thông q a
thuộc t nh o tion của bi n $psise
Đối tư ng $psISE.options chứa:
PS C:\Windows>$psISE.options
TokenColors : {[Attribute, #FFADD8E6], [Command, #FF0000FF], [CommandArgument, #FF8A2BE2], [CommandParameter, #
FF000080]}
Trang 26$ IS o tion O t tPane ackgro nd=”black”
Trang 27$psISE.CustomMenu.SubMenus.Add cần 3 tham số Tham số đầ tiên là tên hi n thị trên menu Tham số thứ định nghĩa c i cần thực thi trong trư ng h này là hà My-Custom-Function Tham số cuối cùng là h t t đư c g n cho nó Ở đây g n Shift+Ctrl+F Khi nhấn đồng th i Shift Ctrl và F trên bàn h thì hà đư c thực thi
N không ốn g n h t t trên 1 en ite bạn có th dùng gi trị $null ở đó
IV Tạo Alias
Tất cả c c lệnh trong indow PowerShell đề theo định dạng danh động từ (v
dụ, Set- xec tionPolicy) độ dài của c c lệnh này gây khó nh v i ngư i dùng Vì th ta
có th tạo c c alia Một alia như là tên thứ 2 của lệnh nào đó à bạn thi t k cho nó Hãy nh rằng, trong Window Shell trư c đây bạn thư ng vi t một file batch đ thực hiện chức n ng này còn trong indow PowerShell t nh n ng alia đã đư c xây dựng
Tôi có th tì ra ch nh ình ử dụng Note ad và y tinh window N như là trong PSH, một c ch nhanh nhất là khởi động hai chương trình bằng c ch đ nh note ad hoặc calc trên dòng lệnh và nhấn nter Vì lư i nên tôi chỉ muốn đ nh n cho note ad hoặc cl cho calc Thực thi đoạn lệnh sau:
New-Item alias:cl -value c:\windows\system32\calc.exe
New-Item alias:np -value c:\windows\system32\notepad.exe
N u muốn thực thi lệnh Set-Execution bằng việc gõ e ta thực hiện:
New-Item alias:se -value Set-Execution
Bạn cần chỉ rõ đư ng dẫn đầy đủ n đang trỏ đ n một lệnh ngoại trú như là ột
Trang 28tạo lại nó ạn chỉ cần định nghĩa lại nó ử dụng lệnh Set – Ite Thay đổi alia e đ thực thi một lệnh m i đó là Show-Monkeys:
Set-Item alias:se -value Show-Monkeys
Bạn có th định nghĩa theo nhiều lựa chọn scope khi tạo 1 alias Một co e là định nghĩa ột phần tử có th đư c truy cậ C c lựa chọn co e là
None: Một alia thông thư ng có th sử dụng và xóa Đây là lựa chọn
đư c mặc định
Constant là alia không đư c xóa hay thay đổi trong suốt hiên là
việc
ReadOnly là c c alia giống như con tant nhưng có th xóa và thay
đổi gi trị, tạo ra tham số Force khi nó đư c thay đổi hay xóa
Private: alias chỉ đư c thấy trong scope hiện hành
AllScope: ẩn khi c c co e i đư c tạo
Bạn có th k t h c c lựa chọn V dụ, n u muốn tạo alias np v i co e là ReadOnly trong khi alia cl là Con tant và All co e dùng đoạn code sau :
New-Item alias:cl -value C:\windows\system32\calc.exe -options
“AllSco e Con tant”
New-Item alias:np -value C:\windows\system32\notepad.exe -o tion “ReadOnly”
Bạn có th sử dụng Set – Ite đ thi t lậ c c lựa chọn cho một alia a khi nó
đư c tạo
Bạn cũng có th đổi tên alia Thay vì xóa và định nghĩa lại alia thì ta dùng lệnh Rename – item
Ví dụ,
Rename-Item alias:np -newname note
C ch kh c đ tạo và chỉnh sửa alia là ử dụng lệnh New-Alia và Set- Alia C c lệnh này đơn giản hơn lệnh New – item
Trang 29Remove-Item alias:se –force
VI Truy cập alias drive
Alia drive là ột ổ logic đ lư c c alia
alia drive là ột ổ ảo đư c sử dụng như là ột cơ ở dữ liệu trong shell PSH của bạn Trong ổ ảo này tất cả c c alia của bạn đư c định nghĩa như là c c hần tử à ỗi phần tử gồm một tên và định nghĩa Tên ch nh là tên của alia và định nghĩa là chỉ alias thay th cho lệnh nào PSH có 1 danh ch dài c c alia đư c định nghĩa lại, mục đ ch
ch nh là giú ngư i dùng ti p tục sử dụng c c lệnh quen thuộc như trong do đ thực hiện
c c công việc trong giao diện dòng lệnh cũ V dụ, n u muốn thực thi lênh DIR trong PSH, PSH sẽ cho bạn thấy một danh ch c c thư ục nhưng k t quả hi n thị như là ột bit kh c Đó là do DIR là ột alias cho lệnh Get-ChildIte c i à thực sự kh c v i lệnh DIR cũ
Trang 30C c định nghĩa alia có th đư c coi như là ột ổ Đây là ng yên nhân tại ao tôi
chọn New – ite đ là v dụ tạo alia hơn là New-Alias
VII Tạo alias persistent(alias c nh)
Alia er i tent là ột alia l ôn l ôn đư c định nghĩa cho dù bạn đóng hay ở cửa sổ PSH
Bạn có th tạo Alias persistent bằng việc định nghĩa c c alia trong kịch bản profile của bạn Bởi vì rofile đư c thực thi mỗi khi bạn mở một cửa sổ PSH m i Nó là ột vị
tr hoàn hảo đ định nghĩa c c alia
PSH có lệnh giú bạn tạo c c alia loại này ạn có th sử dụng lệnh Alia đ export tất cả thông tin về alias ra một file và a đó i ort nó ử dụng Import-Alia C ch ex ort-then-import tạo ra c c alia đư c định nghĩa trong rofile của bạn một
Export-c Export-ch dễ dàng Nó rất Export-có Export-ch khi bạn muốn định nghĩa Export-c Export-c alia giống nha trên nhiề y
t nh ạn có th định nghĩa chúng trên ột hệ thống ex ort định nghĩa alia và a đó hân t n nó t i c c hệ thống kh c (hoặc lư nó ở một vị tr tr ng tâ à có th đọc bởi tất cả c c ho t)
Bạn có th ex ort và i ort c c alia của bạn v i lệnh sau:
Export-Alias C:\myaliases.txt –noclobber
Bạn có th nối thê vào file alia đã có T nh n ng này rất có ch n u bạn có c c alia đư c định nghĩa ở những vị tr kh c nha và thử nén nó thành 1 file đơn
Export-Alias C:\myaliases.txt –append
VIII T u v tab m rộng
Tab ex an ion là ột trong những t nh n ng hữ ch và ti t kiệm th i gian Tab expansion xảy ra khi bạn nhậ tên riêng của một lệnh file hay folder và nhấn h tab đ
tự động hoàn thành nó Có th sử dụng sự mở rộng Tab đ mở rộng 1 đư ng dẫn à
đư c b t đầu nhập ở dấu nh c N u gốc đang ở ổ C và bạn muốn đi đ n Windows\Sy te 3 có c ch dễ dàng như a
Gõ CD IN a đó nhấn h Tab
Trang 31Trừ khi bạn có thư ục nào đó kh c ẽ khởi động v i in đoạn text sẽ tự động
mở rộng đ n Windows
Ngay a INDO S gõ \SYS và nhấn tab
C i này ẽ tự động mở rộng t i folder đầ tiên trong C \ indow và b t đầu v i SYS Trong cài đặt window nó ẽ mở rộng thành C \Windows\System
N u bạn không ốn đ n C:\Windows\Sy te thì giữ h tab đ n khi thấy C:\Windows\System32
ây gi bạn có th nhấn nter đ thực thi lệnh và ch y n đ n thư ục đó
Sự mở rộng Tab đư ng dẫn của một file và folder rất hữ ch indow PowerShell tạo t nh n ng đ mở rộng c c lênh Sự mở rộng c c lệnh không chỉ ti t kiệm
th i gian à còn giú bạn n như bạn chỉ nh tên đầu của một lệnh và là c ch dễ dàng
đ tì ột lệnh hù h p
N u bạn muốn ex ort c c alia và giả sử bạn đã q ên lệnh Export-Alias Bạn có
th mở một hell và gõ x ort- và a đó nhấn Tab Mỗi khi nhấn Tab sẽ hi n thị lệnh k
Trang 32Một ố nhiệ vụ có hiệ q ả hơn n bạn ử dụng tiện ch dòng lệnh trong khi những ngư i kh c thấy th ận tiện hơn và t dễ bị lỗi khi ử dụng giao diện N bạn ay n bạn là ột trong những ngư i th ch là việc trong c c giao diện dòng lệnh (CLI) nhưng
n không tôi không đ cho điề này là hiền bạn indow PowerShell là chỉ là ột công cụ đ giú bạn có đư c nhiề việc hơn trong th i gian ng n
Trong chương này tôi cho bạn đi vào thử vài kịch bản indow PowerShell đ thấy
đư c nó dễ dàng ngay cả khi là ột c i gì đó tương đối hức tạ như k t nối v i Active Directory
I B ầ c v i Windows Power Shell
Việc đầ tiên là chúng ta ẽ là hiện lên àn hình dòng chữ “Hello orld” bằng
c ch chạy dòng lệnh : Write-Output “Hello World!”
Bạn có th đọc đư c danh ch c c alia đư c cài đặt sẵn thông q a dòng lệnh
Get-Alias Bạn có th thấy câ lệnh trên tương đương v i câ lệnh echo trong
indow PowerShell Vì vậy câ lệnh Write-Output “Hello World!” tương dương
v i echo “Hello World!”
ây gi việc hi n thị dòng chữ thông b o lên àn hình bạn đã bi t Bạn có th dùng đ thông b o cho ngư i sử dụng k t quả là việc hay c c tin nh n trạng th i
Trang 33Bạn dùng dòng lệnh Write-Host đ hi n thị đầ ra trên àn hình Nó có th giú
bạn thê th ộc t nh à c cho text à bạn muốn hi n thị
Một câ hỏi đặt ra ti theo là là ao hi n thị đư c c i à ngư i sử dụng nhập vào? V i PowerShell chúng ta có nhiề c ch kh c nha đ là đư c điề đó N là 1 kịch bản bạn có th sử dụng câ lệnh có chứa tham số Bạn có th g n đầu ra của dòng lệnh này là đầ vào của dòng lệnh kh c ạn cũng có th tạo đầ vào từ c c dòng lệnh như a
$name = Read-Host “What’s your name?”
Write-Host (“Hello “ + $name)
Ở v dụ trên Read-Host đư c sử dụng đ nh c ngư i sử dụng trả l i câ hỏi
hat’ yo r na e? Ngư i sử dụng phải nhậ gì đó vào dòng lệnh đ đ lại câ hỏi trên và ấn nter Dòng lệnh ti theo “Hello” ẽ hiện ra cùng v i text nhập vừa nhập vào (H3 1)
II Tạo k ch b ầ ê
Bạn có th tạo ra ng yên bản PSH bằng bất kỳ trình oạn thảo nào Như là Notepad hay Graphical PowerShell Khi bạn lư chúng dư i 1 file mở rộng 1 thì psh sẽ hi chúng là 1 kịch bản chứ không hải là ột tậ tin nào đó Tệp mở rộng này đư c dùng trong indow PowerShell 1 và không thay đổi trong Windows PowerShell 2.0
P h có th chạy c c kịch bản của h1 à không cần thay đổi đoạn ã hay tên tệp
Tệp mở rộng là dành cho cả hiên bản PSH Nhưng n u bạn muốn ng n chặn việc một ngư i nào đó dùng PSH 1 ngẫ nhiên chạy đư c kịch bản riêng PSH
Trang 34Chúng ta ẽ b t đầu v i sự cải bi n của lệnh DIR như Li ting 3-1
1 Nó đọc c c tha chi trên dòng lệnh C c tha ố này cần đư c chỉ rõ
đư ng dẫn t i thư ục trong hệ thống
2 Có th dùng DIR đ hi n thị c c nội dung của thư ục theo danh ch Ngay cả việc hi n thị text à xanh cho tệ và à vàng cho thư ục
2 Lư lại v i tên tệ là ydir 1
(N u bạn sử dụng note ad trư c khi lư bạn phải thay đổi Save As
ty e thành All File )
3 ây gi bạn mở của sổ PSH mở tệ ydir 1 và chạy dòng lệnh :
c:\scripts\mydir.ps1 C:\
Trang 35Kịch bản trên liệt kê nội dung của root trên ổ đĩa C ử dụng kịch bản bạn m i tạo Bạn sẽ nhìn thấy tất cả c c tên file đư c hi n thị bằng c c text à xanh còn c c tên thư ục thì hi n thị bằng c c text à vàng
Bạn có th thay đổi đư ng dẫn t i nơi à bạn đã lư kịch bản
N trong đư ng dẫn t i kịch bản của bạn có chứa 1 hay nhiều dấ ace như C:\Documents and Settings\Administrator\De kto Đ chạy chúng bạn phải thê 1 ký hiệ vào trư c đư ng dẫn đó Như
&’C:\Documents and Settings\Administrator\Desktop\mydir.ps1’
N như bạn ở nơi à bạn lư kịch bản của bạn Bạn chạy chúng bằng c ch nhập
đúng tên của kịch bản đó (Vd mydir.ps1 C:\) , PSH sẽ b o là nó không đư c Cmdlet nhận
diện như chức n ng chương trình hay tệp kịch bản Đây là những cảnh b o nhỏ trong cơ
ch an toàn đư c xây dựng trong PSH Thư ục hiện th i không đư c tự động thê vào khi bạn đang nhập lệnh Cài đặt này nhằ ng n trặn những đoạn nguy hại hoặc c c kịch bản cùng tên như c c câ lệnh ch ng à bạn ngẫ nhiên chạy chúng
Đ chạy một câ lệnh tại thư ục hiện th i thì bạn phải sử dụng tiền tố \
Ki m tra xem số c c đối số của dòng lệnh có bằng 1 hay không ạn cần có ột
đư ng dẫn t i thư ục chỉ định là đối số đầ tiên N không có đối số nào thì PSH đưa lên àn hình thông b o à đỏ “Mi ing Para eter”
Trang 36N nó ch nh x c bằng 1 thì PSH ẽ giữ lấy đối số đó và đưa nó vào bi n
$folderPath
Sa đó ẽ cho hi n thị lên àn hình danh ch tên c c thư ục
# Process each item in the directory
foreach ($i in get-childitem $folderpath) {
Dòng ti p teo b t đầu v i foreach, thi t lậ vòng lặ Nó cho tất cả c c đối tư ng trong () thực hiện c c hoạt động trong dấ {} Điều kiện trong () đôi khi cũng là vòng lặp Trong trư ng h này là chứa tất cả c c đối tư ng đư c trả lại từ lệnh get-childitem à
kh c v i đư ng dẫn thư ục đã cho
Câ lệnh get-childitem giú lấy ra một danh ch c c ite trong đư ng dẫn đư c chỉ định Trong trư ng h này đư ng dẫn nằm trong tham số à ngư i dùng đặt ra ($folderpath)
Mối vòng lặp trả lại một item (mục) ite này ẽ đư c lư ở bi n $i trong vòng lặp này bi n $i tham chi u t i từng đối tư ng à đư c trả lại bởi vòng lặp
Mỗi item trong một thư ục chứa một tậ c c th ộc t nh như Name, Length (size), LastWriteTime, and Mode Mode tham chi u t i c c th ộc t nh (attrib te) kh c của item
đó Như directory (d) archive (a) read-only (r) hidden (h) và y te ( ) hi bạn khôi
Trang 37phục thuộc t nh Mode nó ẽ trả lại một chuỗi 5 thuộc t nh trên Mỗi thuộc t nh đã thi t
lậ đư c g n v i 1 ký tự lấy ra tư tên của attrib te đó và những thuộc t nh chưa đư c thi t lậ thì thay th bằng dấu -
V dụ như 1 thư ục read-only có ột Mode v i gi trị như a d-r Một file kh c
có c c th ộc t nh archive hidden và y te thì những thuộc t nh trả lại là -a-hs
ây gi bạn đã bi t c ch tr y vấn c c th ộc t nh và ite là ột thư ục o nh nó
v i d N u thuộc t nh đầ tiên của c c ki u thuộc t nh n nó là d thì đối tư ng đó là thư mục Sa khi x c định đư c thư ục thì Sử dụng Write-Ho t đ đưa ra àn hình tên của thư ục có nền à vàng Ngư c lại n đối tư ng là file thì à nền là à xanh l cây
(C c hư ng dẫn cụ th về vòng lặp sẽ đư c nh c đ n chi ti t ở chương ố 6)
IV T á ch b ầ ủ
Kịch bản này yê cầu bạn có ột miền Active Directory đ k t nối Giả sử bạn có một số ki n thức về Active Directory và indow Manage ent Instrumentation (WMI) Kịch bản này tr y vấn Organizational (OU) Unit (một tổ chức cụ
th ) trong Active Directory của bạn cho một danh ch c c y t nh Sa đó nó ẽ sử dụng MI đ truy vấn c c th ộc t nh của những y t nh và x ất nó thành định dạng bảng
Hãy xe q a kịch bản trong danh mục 3-2
Listing 3-2: Lấy thông tin y t nh từ c c th ộc t nh của nó trên OU Active Directory
Trang 38}
$arrInfo | format-table Name, Manufacturer, `
Model, NumberOfProcessors, TotalPhysicalMemory
indow PowerShell không chỉ giú ta tr y vấn đư c thuộc t nh của c c đối tư ng trong Active Directory à còn giú tr y vấn c c th ộc t nh thông q a MI và a đó cho ra k t quả dư i dạng bảng
Ở v dụ trên kịch bản liệt kê kê tên nhà ản xuất ô hình
số lư ng ( name, manufacturer, model, Number ) của bộ vi xử lý Và tổng số bộ nh vật
lý của y t nh trong OU đã cho
ây gi tôi giả định rằng tất cả c c ite trong OU là ột y t nh Trong ột kịch bản sản xuất thực t sẽ rất nhiều lỗi ki tra hơn giữa c c lệnh và cũng có th tạo c c bộ lọc cho Active Directory truy vấn vì OU có th chứa c c y t nh và c c loại đối tư ng
kh c như ngư i sử dụng c c nhó và địa chỉ liên lạc
N u bạn muốn bi t kịch bản chạy trên hệ thống của bạn như th nào ạn vi t vào trong v n bản Thay đổi đư ng dẫn LDAP đ và hiện tại của bạn OU trong Active Directory a đó lư nó v i tên complist.ps1 và chạy kịch bản này
Bạn sẽ thấy c c dòng k t thúc v i ký tự ‘ Điề này c nghĩa rằng dòng k ti p chỉ là dòng nối ti p của dòng hiện tại và không là ột lệnh riêng biệt
Điề này rất hữ ch n u bạn có c c lệnh rất dài à bạn muốn chia
ra thành nhiề dòng hơn là đ nó cứ dài ãi ang bên hải
Chú ý
Đừng lẫn lộn dấu backtick (`) với dấu nháy đơn (') Dấu backtick thường được tìm thấy bên trái của số 1 phím trên bàn (thường là trên phím tab)
(K t quả của kịch bản truy vấn Active Directory/WMI )
Trang 39V Examining the Nuts and Bolts of the Complist Script
Kịch bản ở Listing 3- đư c tạo bởi 3 phần
Phần đầ tiên : k t nối v i Active Directory và c c tr y vấn một danh ch c c tên
Phần ti theo là ử dụng l in3 _Co terSy te MI đ truy vấn từng y
t nh v i danh ch c c th ộc t nh đư c liệt kê
Cuối cùng là hần hi n thị k t quả trên àn hình
- Hai dòng ã lệnh đà tiên
$ = [ D I] “ D // = , = , = ”
$computers = $ou.PSBase.Get_Children()
Dòng đầ tiên là c ch dễ nhất đ thi t lập k t nối v i Active Directory
sử dụng dịch vụ Active Directory Interface (ADSI) Bạn phải cung cấp đúng đư ng dẫn đ n một OU hiện tại n không thì kịch bản sẽ trả lại lỗi
Sử dụng PSBase.Get_Children trả lại một Nhó của c c đối tư ng đại diện cho từng ite trong OU và lư nó trong ột bi n $computers
Trang 40Ti theo là vòng lặ foreach nơi bạn thực hiện lặ cho c c ite và đư c tậ hơ trong bi n $computers Trong mỗi vòng lặ c c ite hiện tại là tạm th i tham chi u
t i bi n $node
Sa đó ử dụng Get-WmiObject đ truy vấn t i không gian tên Win32_Computer System của y t nh rồi thê vào ảng $arrInfo bằng hé + =
hi điề này đư c thực hiện lặ đi q a tất cả c c ite trong OU thì ảng
$arrInfo sẽ chứa tập h p lần lư t c c đối tư ng chứa c c thông tin về c c th ộc t nh
kh c nha à bạn truy vấn thông q a MI
Phần thứ 3
$arrInfo | format-table Name, Manufacturer, `
Model, NumberOfProcessors, TotalPhysicalMemory
Trong phần cuối này chúng ta đưa nội dung của mảng $arrInfo vào trong lệnh format-table nơi à bạn chọn ra những cột à bạn muốn hi n thị và p x p format-table sẽ là nhiệm vụ dựng c c đối tư ng trong một bảng
Đi m mạnh của indow PowerShell là không cần ngư i sử dụng phải có ột nền tảng lập trình vững ch c N u bạn có ột lậ trình viên tốt hay một ngư i vi t kịch bản nền tảng, Windows PowerShell sẽ cung cấ c c t nh n ng ở rộng giú bạn
ki o t đư c nhiề hơn giú bạn có thê những giải h tốt hơn cho công việc