自動化具有高度方便的特點,同時也可能會自動產生一些不可避免的錯誤。這也就是Powershell為什么會有一些專門來防止和處理危險的機制:這些機制會對接下來要執行的操作進行確認。
試運行:模擬操作
如果你想知道一個確定的命令會產生什么影響,你可以進行試運行。這時,Powershell不會執行任何對系統有影響的操作,只會告訴你如果沒有模擬運行,可能產生什么影響和后果。通過-whatif 參數。事實上,許多cmdltes都支持試運行。
#如果執行stop-process -name *a*會終止下面的進程。Stop-Process -Name *a* -WhatIfWhatIf: 對目標“AcroRd32 (4544)”執行操作“Stop-Process”。WhatIf: 對目標“AcroRd32 (4836)”執行操作“Stop-Process”。WhatIf: 對目標“Alipaybsm (2888)”執行操作“Stop-Process”。WhatIf: 對目標“AlipaySafeTran (2808)”執行操作“Stop-Process”。WhatIf: 對目標“AlipaySecSvc (1656)”執行操作“Stop-Process”。WhatIf: 對目標“AliveService (1684)”執行操作“Stop-Process”。WhatIf: 對目標“CBGrabConnect_x64 (6052)”執行操作“Stop-Process”。WhatIf: 對目標“FlashUtil32_11_2_202_235_ActiveX (1136)”執行操作“Stop-Process”。WhatIf: 對目標“IAStorDataMgrSvc (2920)”執行操作“Stop-Process”。WhatIf: 對目標“IAStorIcon (3112)”執行操作“Stop-Process”。WhatIf: 對目標“lsass (740)”執行操作“Stop-Process”。WhatIf: 對目標“notepad++ (5124)”執行操作“Stop-Process”。WhatIf: 對目標“RAVCpl64 (3484)”執行操作“Stop-Process”。WhatIf: 對目標“SearchIndexer (3788)”執行操作“Stop-Process”。WhatIf: 對目標“taskhost (2304)”執行操作“Stop-Process”。WhatIf: 對目標“unsecapp (264)”執行操作“Stop-Process”。WhatIf: 對目標“unsecapp (2680)”執行操作“Stop-Process”。WhatIf: 對目標“wlanext (1420)”執行操作“Stop-Process”。WhatIf: 對目標“ZhuDongFangYu (1156)”執行操作“Stop-Process”。
當然如果你想讓自己的腳本和函數也支持模擬運行,只需要進行簡單的整合。多增加一個switch參數。
function MapDrive([string]$driveletter, [string]$target, [switch]$whatif){ If ($whatif) { Write-Host "WhatIf: creation of a network drive " + "with the letter ${driveletter}: at destination $target" } Else { New-PSDrive $driveletter FileSystem $target }}# 首先進行模擬運行:MapDrive k 127.0.0.1c$ -whatifWhatIf: creation of a network drivewith letter k: at destination 127.0.0.1c$ # 執行命令MapDrive k 127.0.0.1c$Name Provider Root---- -------- ----k FileSystem 127.0.0.1c$
逐步確認:逐個查詢
正如之前看到的那樣,在使用“*”通配符時,可能會在瞬間產生許多任務。為了防止產生失誤操作,可以逐個進行確認,逐個進行放行。
Stop-Process -Name *cm* -Confirm 確認是否確實要執行此操作?對目標“cmd (1012)”執行操作“Stop-Process”。[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 掛起(S) [?] 幫助 (默認值為“Y”): ?Y - 僅繼續執行操作的下一步驟。A - 繼續執行操作的所有步驟。N - 跳過此操作并繼續執行下一操作。L - 跳過此操作及所有后續操作。S - 暫停當前管道并返回到命令提示符。鍵入“exit”可繼續執行該管道。[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 掛起(S) [?] 幫助 (默認值為“Y”): N 確認是否確實要執行此操作?對目標“cmd (3704)”執行操作“Stop-Process”。[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 掛起(S) [?] 幫助 (默認值為“Y”): sPS E:>>>PS E:>>> exit 確認是否確實要執行此操作?對目標“cmd (3704)”執行操作“Stop-Process”。[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 掛起(S) [?] 幫助 (默認值為“Y”): y 確認是否確實要執行此操作?對目標“cmd (4404)”執行操作“Stop-Process”。[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 掛起(S) [?] 幫助 (默認值為“Y”): a
|
新聞熱點
疑難解答