人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

Powershell錯誤處理之what-if

發(fā)布日期:2022-01-27 08:21 | 文章來源:源碼中國

自動化具有高度方便的特點(diǎn),同時也可能會自動產(chǎn)生一些不可避免的錯誤。這也就是Powershell為什么會有一些專門來防止和處理危險(xiǎn)的機(jī)制:這些機(jī)制會對接下來要執(zhí)行的操作進(jìn)行確認(rèn)。

試運(yùn)行:模擬操作

如果你想知道一個確定的命令會產(chǎn)生什么影響,你可以進(jìn)行試運(yùn)行。這時,Powershell不會執(zhí)行任何對系統(tǒng)有影響的操作,只會告訴你如果沒有模擬運(yùn)行,可能產(chǎn)生什么影響和后果。通過-whatif 參數(shù)。事實(shí)上,許多cmdltes都支持試運(yùn)行。

#如果執(zhí)行stop-process -name *a*會終止下面的進(jìn)程。
Stop-Process -Name *a* -WhatIf
WhatIf: 對目標(biāo)“AcroRd32 (4544)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“AcroRd32 (4836)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“Alipaybsm (2888)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“AlipaySafeTran (2808)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“AlipaySecSvc (1656)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“AliveService (1684)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“CBGrabConnect_x64 (6052)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“FlashUtil32_11_2_202_235_ActiveX (1136)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“IAStorDataMgrSvc (2920)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“IAStorIcon (3112)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“l(fā)sass (740)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“notepad++ (5124)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“RAVCpl64 (3484)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“SearchIndexer (3788)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“taskhost (2304)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“unsecapp (264)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“unsecapp (2680)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“wlanext (1420)”執(zhí)行操作“Stop-Process”。
WhatIf: 對目標(biāo)“ZhuDongFangYu (1156)”執(zhí)行操作“Stop-Process”。

當(dāng)然如果你想讓自己的腳本和函數(shù)也支持模擬運(yùn)行,只需要進(jìn)行簡單的整合。多增加一個switch參數(shù)。

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
  }
}
# 首先進(jìn)行模擬運(yùn)行:
MapDrive k 127.0.0.1c$ -whatif
WhatIf: creation of a network drive
with letter k: at destination 127.0.0.1c$
 
# 執(zhí)行命令
MapDrive k 127.0.0.1c$
Name Provider Root
---- -------- ----
k FileSystem 127.0.0.1c$

逐步確認(rèn):逐個查詢

正如之前看到的那樣,在使用“*”通配符時,可能會在瞬間產(chǎn)生許多任務(wù)。為了防止產(chǎn)生失誤操作,可以逐個進(jìn)行確認(rèn),逐個進(jìn)行放行。

Stop-Process -Name *cm* -Confirm
 
確認(rèn)
是否確實(shí)要執(zhí)行此操作?
對目標(biāo)“cmd (1012)”執(zhí)行操作“Stop-Process”。
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 掛起(S) [?] 幫助 (默認(rèn)值為“Y”): ?
Y - 僅繼續(xù)執(zhí)行操作的下一步驟。
A - 繼續(xù)執(zhí)行操作的所有步驟。
N - 跳過此操作并繼續(xù)執(zhí)行下一操作。
L - 跳過此操作及所有后續(xù)操作。
S - 暫停當(dāng)前管道并返回到命令提示符。鍵入“exit”可繼續(xù)執(zhí)行該管道。
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 掛起(S) [?] 幫助 (默認(rèn)值為“Y”): N
 
確認(rèn)
是否確實(shí)要執(zhí)行此操作?
對目標(biāo)“cmd (3704)”執(zhí)行操作“Stop-Process”。
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 掛起(S) [?] 幫助 (默認(rèn)值為“Y”): s
PS E:>>>
PS E:>>> exit
 
確認(rèn)
是否確實(shí)要執(zhí)行此操作?
對目標(biāo)“cmd (3704)”執(zhí)行操作“Stop-Process”。
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 掛起(S) [?] 幫助 (默認(rèn)值為“Y”): y
 
確認(rèn)
是否確實(shí)要執(zhí)行此操作?
對目標(biāo)“cmd (4404)”執(zhí)行操作“Stop-Process”。
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 掛起(S) [?] 幫助 (默認(rèn)值為“Y”): a

確認(rèn)程序提供了6個選項(xiàng)。

是 – 僅繼續(xù)執(zhí)行操作的下一步驟。
全是 – 繼續(xù)執(zhí)行操作的所有步驟。
否 – 跳過此操作并繼續(xù)執(zhí)行下一操作。
不全是 – 跳過此操作及所有后續(xù)操作。
掛起 – 暫停當(dāng)前管道并返回到命令提示符。鍵入“exit”可繼續(xù)執(zhí)行該管道。
幫助 – 提供幫助信息

自動對危險(xiǎn)的操作進(jìn)行操作

因?yàn)橐恍┎僮鞯奈kU(xiǎn)系數(shù)會比其它的操作的危險(xiǎn)系數(shù)高,所以Powershell腳本的開發(fā)者會每一條命令進(jìn)行風(fēng)險(xiǎn)評估。例如Stop-Process,它會終止當(dāng)前正在運(yùn)行的程序或者進(jìn)程。它的危險(xiǎn)系數(shù)被設(shè)置為中等。因?yàn)檎G闆r下,可能會產(chǎn)生的不可恢復(fù)并且不可預(yù)知的危險(xiǎn)。例如Exchange中的命令刪除用戶的郵件被歸類為高危險(xiǎn)性,因?yàn)猷]件一旦刪除那就意味著所有的郵件內(nèi)容都不復(fù)存在。

你不可能改變這些風(fēng)險(xiǎn)評估,但是你可以對此作出回應(yīng)。powershell的默認(rèn)設(shè)置會將自動化的操作歸類為危險(xiǎn)操作,即使你沒有指定-confirm參數(shù)。這一標(biāo)準(zhǔn)的設(shè)置被存儲在全局變量$ConfirmPreference中。$ConfirmPreference可以對默認(rèn)設(shè)置或者其它更嚴(yán)格的設(shè)置作出判斷與回應(yīng)。但是如果你將$ConfirmPreference的值設(shè)置為“None”,Powershell就不會進(jìn)行操作前詢問確認(rèn),即使可能面臨高風(fēng)險(xiǎn)的操作。

#查看$ConfirmPreference支持的設(shè)置
[ENUM]::GetNames($ConfirmPreference.GetType())
None
Low
Medium
High
 
#查看當(dāng)前的$ConfirmPreference
$ConfirmPreference
High
 
確認(rèn)
是否確實(shí)要執(zhí)行此操作?
對目標(biāo)“calc (5144)”執(zhí)行操作“Stop-Process”。
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 掛起(S) [?] 幫助 (默認(rèn)值為“Y”): y

總結(jié)一下,就會有兩種情況。

危險(xiǎn)環(huán)境:如果你對要執(zhí)行的操作的危險(xiǎn)性不確定,最好將$ConfirmPreference 設(shè)置為low,這樣可以更安全一點(diǎn)。
安全環(huán)境:如果你在某些情況下要執(zhí)行大量無關(guān)安全的操作,為了方便起見可以將$ConfirmPreference設(shè)置為None,因?yàn)獒槍γ總€命令都去設(shè)置-confirm 為false也是一件很繁瑣的事情。但是建議最好在腳本中將$ConfirmPreference設(shè)置為”None”,這樣可以將放權(quán)設(shè)置在最小的風(fēng)險(xiǎn)下。

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時開通

自選配置、實(shí)時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部