2
C
C
l 11
Sức mạnh của ngôn ngữ kịch bản
11
Sự thay đổi từ Monad thành PowerShell
12
Một chút về Windows PowerShell 1.0
13
Phiên bản Windows PowerShell
ự h t tri n ti
theo
14
Cài đặt Windows PowerShell 2
15
Khởi động Command Shell của Windows PowerShell
15
Giao diện đồ họa
17
C
indow Power Shell t ch h
Shell (ISE)
T
19
C nhân hóa c ch nhìn và cảm nhận command shell.
Thê
à
c vào th gi i của bạn
Lấy k ch cỡ riêng cho cửa sổ của bạn
Hi n thị tiê đề của cửa sổ
Thay đổi thông tin của PowerShell
Tì hi c ch là việc của Windows PowerShell ISE.
Tùy chỉnh ISE
Thê chức n ng của riêng bạn vào en IS
Tạo Alias
Xóa alia
Truy cập alias drive.
19
19
20
21
22
24
25
26
27
29
30
Tạo alias cố định
30
Tì
31
C
hi u về tab mở rộng
3 Mộ
B t đầu là
ó
l nh Shell, Mộ
â
ức mạnh
việc v i Windows Power Shell.
33
Tạo kịch bản đầ tiên
34
C c bư c đ tạo 1 kịch bản đầ tiên
36
Tì
hi u từng phần kịch bản đầ tiên
37
Tì
hi
39
nhanh c c kịch bản hức tạ
Nghiên cứ N t và olt của kịch bản Co
li t
41
45
2
C
45
Cmdlets: The Little Commands That Could!
Tì
i
hi
C dlet
â hơn
45
tra ự tồn tại của c dlet
Giú bạn hi
45
45
hơn về cmdlets
46
One Shell to Rule Them All
49
Kịch bản Windows Shell
49
Windows Scripting Host
52
C
h
Tì
C
C
h bi n ố Chúng kh c nha rất nhiều
hi
c c loại dữ liệu
56
57
Giao ti p v i c c loại dữ liệu
59
X c định rõ ràng ki u dữ liệu
61
Đúc c c gi trị
64
Bi n Liên tục và i n chỉ đọc
67
Tì
hi u về bi n tự động
69
Là
việc v i c c đối tư ng thông q a bi n
72
6 Mộ
77
ú
t ki m mộ
Vỡ lòng về logic
78
Rẽ nh nh bằng If/ Else
83
Sử dụng câ lệnh Switch
86
Lặ đi lặp lại hành động v i c c vòng lặp
86
Vòng lặp v i For
87
Sử dụng Foreach đ duyệt qua tập h p
88
Vòng lặp cho While
88
Chạy vòng lặp t nhất một lần v i Do While
89
Vòng lặp Do Until
90
Tr nh những cạm bẫy vòng lặp
91
(pipeline)
3
Sử dụng những Pipeline đ h
lý hóa những lệnh của bạn
90
Thực thi nhiều lệnh cùng nha
92
Thi t lậ đúng đầu ra
96
C
I
Là
q en v i Windows Management Instrumentation (WMI)
100
Nghiên cứ về ki n trúc
102
Tì
MI
những tên dùng trong
MI
104
Bảo mật trong WMI
106
Những tương t c của Windows PowerShell v i WMI
Sử dụng cú h
SQL ở
hai th c ức
ạnh của
MI đ lấy
QL
MI
111
Truy vấn trạng th i dịch vụ
Tì
ki
107
113
c c bản ghi ự kiện
Thay đổi những mức chứng thực WMI
Thi t lậ ngư i sử dụng bằng I er onation
115
Using the New WMI Cmdlets
Making things happen with Invoke-WMIMethod
C
Xóa những đối tư ng đang ử dụng Remove-WmiObject
119
Cài đặt những thuộc t nh
121
9 Đ
MI ử dụng Set-WmiInstance
light
C i nhìn đầ tiên về chuỗi
122
Phân biệt giữa e
122
ty và n ll tring
Tạo chuỗi chữ
123
Đơn giản hóa bằng c ch ử dụng Here-Strings
123
Thực hiện phẫu thuật chuỗi
125
K t h p chuỗi
K th
125
c c ch ỗi v i nonstrings
125
4
Là
T ch ch ỗi
126
C t bỏ 1 phần của chuỗi
127
Thực hiện thay th chuỗi
129
việc v i vị tr ch ỗi
129
Thay đổi trư ng của chuỗi
130
Using Regular Expression
131
Tạo Regex đơn giản sử dụng c c ký tự chữ
132
Thực hiện tì
134
ki
động sử dụng c c bộ ký tự
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
C
Sử dụng neo đ d y trì vị tr
138
Đ n v i lựa chọn thay th
139
Sử dụng Regex trong Windows PowerShell
139
0 T
ẽ nhận 100usd
Đưa dữ liệu loại số
141
C c ki u dữ liệu trọn vẹn
141
Thi t lậ ch nh x c bằng c ch ử dụng ki u dữ liệu onintegral 142
Là
1 ố hé to n
143
Phé cộng
143
Giả
gi trị v i hé trừ
145
Mở rộng thông q a c c hé nhân
Giả
Là
146
thông q a hé chia
146
tròn gi trị
147
Tạo số ngẫ nhiên
148
Chuy n đổi số
149
Tràn Dữ Liệu
149
C
N ó
Tì
ữ li u bằ
á
ử dụng m
ă
hi u về mảng
151
Tạo và ử dụng mảng
152
5
Tạo mảng
152
Truy cậ c c hần tử của mảng
153
Vòng lặp qua mảng
154
Thay đổi k ch thư c của mảng
156
Tạo mảng đa chiều
157
Tì
ki
Là
việc v i bảng Hash
160
Tạo và ử dụng bảng Hash
160
Sửa đổi c c bảng Hash
162
Bản chất bảng Hash
162
Vòng lặ thông q a bảng Hash
163
C
hương thức sử dụng kh c cho
ảng
158
Đ
Having Some Fun with the File System
166
Di chuy n xung quanh hệ thống tập tin
166
Quản l thư
166
ục
C c thao t c tập tin trong hệ thống tập tin
169
Đọc tậ tin v n bản
169
Writing Files
171
Working with XML
174
Là
C
Đọc và vi t c c tập tin XML
174
Giữ c c đối tư ng trong tập tin XML
177
việc v i HTML
180
3 T
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
Tạo ngày theo c ch của riêng bạn
188
6
Thực hiện c c t nh to n về ngày
Là
188
T nh to n th i gian kh c nha
188
Nhìn vào tương lai
189
Ki m tra th i gian mặc dù là ti t kiệm th i gian ban ngày
191
việc v i
192
úi gi
Chuẩn hóa v i th i gian quốc t
192
Sử dụng l p TimeZone
193
C
ử ụ
T i ử dụng
á
ã trong hà
Tạo ra hà
195
đầ tiên của bạn
X c định c c tha
196
ố
197
Gi trị Trả về
198
Phạm vi sử dụng
Tì
hi
201
c c q y t c về phạm vi
201
Tên trùng nha
C c q y định hà
203
trong hạm vi toàn cục
205
Tạo cmdlets nâng cao của riêng bạn
Tì
nâng cao
206
X c định c c th ộc t nh
208
X c định c c tha
ố
209
X c định c c hương thức
212
Thực thi hà
214
Tì
C
hi u về cơ cấ hà
206
nâng cao
hi u chức n ng của c c hà
N
nâng cao
C ạ
ạ
7
Sử dụng công việc chạy nền
215
ch hoạt WINRM
216
B t đầ 1 công việc
217
Lấy k t quả
218
trình đ i của một job
Q
220
Định gi i hạn 1 job
Đưa
C
222
ột job ngưng hẳn lại
223
Chạy lệnh điều khi n từ xa
224
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
226
y t nh kh c
Gọi lệnh từ xa
227
Tạo một k t nối liên tục
228
Chạy công việc chạy nền từ xa
230
Hi u về ch nh
232
ch, hiện trạng, quyền ư tiên
6 Tạ
ạ
ữ
á
Thấy đư c tầm quan trọng của Internationalizing Scripts
233
Script của bạn trên
ỗi ngôn ngữ kh c nha
234
Sử dụng t nh n ng
i internationalization
236
Tì
hi u về nền v n hóa
237
Putting it all together
238
Chia sẻ kịch bản v i những ngư i kh c
243
8
C
N ữ
Tì
ỗ
ra những nơi
à lỗi xuất hiện
244
Bảo vệ chống lại đầ vào không
Tì
ra
ong
ốn.
244
ột lỗi logic không ch nh x c
245
Lỗi hệ thống
246
Tì
hi
về chương trình bẫy lỗi
246
Là
việc v i hệ thống bảo vệ của bạn
250
Là
việc v i công cụ bẫy lỗi
253
Là
253
việc v i đi
Thi t lậ đi
dừng
dừng
256
Câ lệnh gỡ lỗi
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
Xóa đi
C
257
dừng
259
N m vụ i u khi n: Vậ
Theo dõi không gian ổ đĩa
ộ h th ng
260
Quản lý Dịch vụ trong Windows
267
Điề khi n dịch vụ
269
Cấ hình dịch vụ
i
tra vent Log
Tr y vấn ventLog
C
9
272
ử dụng
273
MI
275
ủ windows registry
Gi i thiệu về cây regi try
278
9
K 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
Đọc key và val e
284
Ghi key và val e
286
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
Sử dụng Micro oft
C
289
in3 Regi try ey đ xóa regi try key values 289
0 N
Gi i thiệ
ử dụng PSDrive
D
ơ bộ về Active Directory Primer
291
K t nối t i Active Directory
292
Truy vấn c c đối tư ng và th ộc t nh
293
Tạo LDAP filter
295
Dyna ically obtaining a
er’ di ting i hedNa e
301
Sửa đổi thuộc t nh đối tư ng
302
Cập nhật thành viên nhó
303
Tì
304
ra đối tư ng Raw ADSI sử dụng psbase
C
Những đặc t nh An toàn PowerShell
Loại bỏ kẽ hở thư
307
ục hiện tại
307
Stopping the double-click blues
308
Bảo vệ thông q a xec tionPolicy
308
Tạo một chứng chỉ chữ ký điện tử
310
Tạo ra một chứng chỉ chữ ký riêng
310
10
Việc đòi hỏi một chứng chỉ từ tổ chức CA
314
Việc duyệt kho chứng chỉ
316
ý tên c c kịch bản của bạn
317
Quản lý Tư ng lửa Windows
322
Định nghĩa globally open ports (cổng mở toàn cầu)
Danh
ch dịch vụ tư ng lửa
325
Cho hé những ứng dụng đi q a
C
C
ổi
ó
á
ch b
327
ũ,
ê
á
ch b n m i
Chuy n đổi một kịch bản Windows Shell sang Windows PowerShell 330
In ra
àn hình
330
Sử dụng những lệnh có điều kiện
331
Sử dụng lệnh For
333
Chuy n đổi kịch bản WindowsHost Scripting sang Windows PS
Cơ ở o
nh
338
338
Là
việc v i đối tư ng COM
339
Tì
hi u sự kh c nha giữa CreateObject và GetObject
342
Xử lý vào/ra
344
Là
346
việc v i ActiveX Data Object (ADO)
Tận dụng ADO N T vào l i th của bạn
C
3
m
á
347
ạng
Cài đặt và q ản trị mạng của bạn
Là
Là
356
q en v i Win32_NetworkAdapterConfiguration
357
Thi t lập lại TCP/IP
360
Thao t c thi t lập TCP/IP
361
Quản lý
364
indow’ Firewall
q en v i Windows Firewall COMmander
nabling và di abling
indow Firewall
11
365
367
Lấy thuộc t nh vi ible
368
Danh
368
ch c c q yền ứng dụng
Lấy danh
ch tất cả c c cổng mở globall
Sử dụng nút re et
C
Q
370
ý p ần cứng
Phần cứng của bạn
Tì
371
hi u xem bạn có những phần cứng nào
Ki m tra trạng th i hần cứng
Điều khi n
y in
Thi t lậ
385
y in trên
Ng t k t nối chia sẻ
y in trên
ạng
y in
Giữ một m t trên hàng đ i của
á
ạng
ặc định
Ki m tra trạng th i
Tạ
372
384
y in của bạn
K t nối đ chia sẻ
C
369
388
y in
390
á
Sử dụng Built-In Reporting Cmdlets
392
Tạo b o c o
393
Tùy chỉnh đầu ra dạng bảng v i Format-Table
393
Thi t lậ độ rộng cho cột
394
Chuẩn bị dữ liệu cho c c công cụ b o c o kh c
397
Tạo bảng dữ liệu của bạn
398
Là
b o c o đẹp m t
401
Sử dụng công cụ b o c o tr ng gian
406
7: The Part of Tens
C
6
C
Sử dụng get – hel đ tr giú
407
12
Là
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
409
MI (công cụ quả trị windows)
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
411
C
ầ
o t đư ng dẫn
ử ụ
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
Q ên ch y n bi n thành dạng chuỗi
419
Sử dụng to n tử o
420
nh không đúng
Cố g ng đ thực hiện q
nhiều lệnh trong một đư ng dẫn lệnh
Q ên Lĩnh vực về Bi n
423
423
hông Sử dụng Debugger (gỡ lỗi)
425
hông ử dụng l p. NET Khi Available.
425
13
Phần 1: T
ower Shell 2
C
CƠ BẢN VỀ
INDO
O
ER
N
Tôi là
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 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à
lặ lại nhiề lần. Bất cứ khi nào tôi cảm thấy bản thân
ch n, điều đầ tiên xuất hiện trong tâ
này!" M y t nh là con ngựa là
kh c và không bao gi
ình là
điề gì đó rất nhà
tr " phải có một c ch đ tự động hóa điều
việc tuyệt v i. Chúng có th chạy ngày này q a ngày
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à
là
việc ch
như vi t cuốn
những việc
chỉ hơn đ tôi có th có th i gian đ là
cho
y t nh
những việc quan trọng hơ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
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
Windows dễ dàng hơn đ sử dụng, và trong q
trình là
indow
và cố g ng đ 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
bi t những gì họ muốn và không
l n c c ngư i sử dụng
ốn hải ngồi cả ngày dài bấ
đ hoản thành công việc.
14
vào c c hộp thoại
I.
Sức mạnh củ
ữ k ch b n.
indow Shell đư c bi t như là trang lệnh hay dấu nh c DOS đ tương t c v i
windows tại giao diện dòng lệnh. Bạn có th tự động hóa nhiề t nh n ng của Windows
từ trang lệnh sử dụng c c lệnh sẵn có c c ứng dụng dòng lệnh kh c và c c ch ỗi đ tạo
thành c c kịch bản Windows Shell( hoặc c c file batch như trong DOS) N u bạn muốn
một bit điều khi n, bạn có th sử dụng indow Scri ting Ho t ( SH) và a đó ử
dụng V Scri t or J cri t đ tự động hóa c c công việc của bạn Câ hỏi hi n nhiên đư c
đặt ra đó là “Tại sao lại thê vào indow PowerShell ự k t h này” Liệu bạn không
th 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.
15
N u bạn muốn đọc về Monad Manife to khi nó x ất hiện vào n
bạn có th
xe
trên
blog
của
đội
h t
tri n
Windows
PowerShell
( /> 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
(Chương 15)
Cá
lệnh ở ch độ nền
xa Cho hé thực thi c dlet và c c kịch bản từ xa.
c ch ộ n n: sự cải ti n này cho hé bạn chạy c c
à vẫn có th ti p tục là việc v i những thứ kh c (chương 15)
16
Cá
p cao c c lệnh c dlet đư c vi t bởi C# và V N T
có th vi t c c lệnh cmdlet giả sử dụng windows PowerShell.
chia sẻ.
N
ạn
ữ dữ li u có th chia nhỏ c c đoạn code từ dữ liệ đ dễ dàng
Sự k t n i b n c c kịch bản có th
dàng thực thi.
hù h p v i nhiề ngôn ngữ đ dễ
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
Một s p ép á
á
n tự ộng m i: Một số hé to n
iđ
có th dễ dàng t ch và nối c c chuỗi và c c bi n tự động trong việc truy cậ thông
tin về ngôn ngữ cho giao diện ngư i dùng Chương 5
-
Bổ
á
nh cmdlet m i: hầu h t đ hỗ tr t nh n ng trư c
R
ộ á
p : cung cấp chức n ng đ ràng b ộc c c lệnh
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
một số t nh n ng
một lúc
í
p k ch b n ISE: Một hiên bản đồ họa có thê
i như nhiề kh ng tab đ là việc v i nhiều kịch bản cùng
Xem k t qu
i dạ
dạng bảng nơi à bạn có th s p x
i: Bạn có th tạo ra k t quả của lệnh v i
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ẵ ó
bi n đư c thê vào cho c c lệnh sẵn có đ t ng c c chức n ng
III.
C
: Một số
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
a. Download và cài đặt Microsoft .NET Framework 2.0
17
b.
c.
d.
Download và cài đặt Microsoft .NET Framework 3.5.1.
i.
Yê
cầ cho IS ( ôi trư ng t ch h p kịch bản) và O t-GridView
Download và cài đặt WinRM 2.0 CTP3.
i.
Thuận
l i cho c c t nh n ng điều khi n từ xa và ch độ nền.
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
trang soạn thảo lệnh b ng c ch
indow PowerShell
là PSH Ta có th khởi động
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
18
6 Giao di
ồh av
i sử dụng. ISE
indow PowerShell Integrated Shell nviron ent (IS ) là ch độ đồ họa giú
bạn giao ti p dễ dàng v i PSH.
Start➪All Programs➪Windows PowerShell v2➪Windows
PowerShell ISE.
IS có giao diện đẹp m t:
Cửa sổ Scri t/ ditor Đây là nơi
bản PSH của bạn.
-
à bạn có th xe
và chỉnh sửa kịch
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
lệnh bình thư ng.
and Có th nhập c c lệnh như là
ột trang soạn thảo
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
ta
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
gi c trỏ sang phải ) trên thanh công cụ Trên thanh công cụ có đầy đủ c c t nh n ng
19
soan 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
tạo
ra
c c
v n
bản
đơn
giản
là
c c tậ tin và c c tậ tin XML
20
CHƯƠ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.
Là việc v i c c Alia e
Tì hi u về t nh n ng ở rộng Tab
Tôi th ch xe
mọi ngư i trong khi họ là
việc trư c
y t nh Tôi thấy nó hấp dẫn.
Hãy gọi tôi là kh c ngư i nhưng là đ xem c c c ch kh c nha mọi ngư i chọn đ tương
t c
v i
y
V dụ tôi sử dụng nó là
c c h
t t bàn h
bàn h
của
họ.
việc v i một quản trị viên Windows ngư i hi m khi sử dụng
Ctrl + C và Ctrl + V đ
sử dụng hương h
cũng sử dụng đ là
t nh
ao ché và d n c c mục. Ông l ôn l ôn
ao ché và d n bởi vì ông cảm thấy ông ki
việc v i một ngư i đã cố g ng là
o t nhiề hơn. Tôi
tất cả mọi thứ bằng c ch ử dụng
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
việc
của
bạn
Tôi nghĩ rằng trư c khi b t đầu là
nó hữ
hiệu
quả
việc v i Windows PowerShell, bạn có th tì
ch đ bi t c ch kh c nha đ tùy chỉnh
I. Cá
â ó á
T
T
T
bạn thú vị?
ổ
ổ
ổ
í
ê
m nhận của command shell.
ữ
c cửa sổ
cửa sổ
21
thấy
ô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à
nhanh hơn. Điề này là
nhất.
việc
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
à
hù
h p
cho
thuộc
t nh
UI.RawUI.ForegroundColor của đối tư ng.
đ n đối tư ng hiện hành ạn g n
UI RawUI ackgro ndColor
và
L y
í
ỡ ê
ử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
ta g n trực ti p một gi trị m i cho thuộc t nh đó ởi vì indowSize là ột đối
22
tư 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 đệ
cho BufferSize.
c ch đơn giản là thay th WindowSize
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
ây gi bạn có th
tiê đề của cửa sổ.
indowTitle=” indow PowerShell R le !
hân biệt một cửa sổ PSH v i c i kh c bằng c ch đọc nhanh
23
II.
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.
Theo mặc định, vị tr
rofile đư c đặt ở một file là
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_profi
le.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”
$size = $Shell.WindowSize
$size.width=120
$size.height=55
$Shell.WindowSize = $size
$size = $Shell.BufferSize
$size.width=120
$size.height=5000
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
ch thực thi ang Re oteSigned nó ẽ kh c phục hạn ch này khi lư trữ kịch
25
bản cục bộ Đóng cửa sổ PSH và ở một shell m i có th xe
k ch thư c đư c thay đổi như th nào
tiê đề
à và
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]}
DefaultOptions
: System.Management.Automation.Host.DefaultOptions
26