濮阳杆衣贸易有限公司

主頁 > 知識庫 > Powershell錯誤處理之what-if

Powershell錯誤處理之what-if

熱門標簽:電話智能外呼系統(tǒng)誠信合作 安徽400電話辦理 真人和電話機器人對話 什么渠道可以找外呼系統(tǒng)客戶 金融電銷公司怎么辦理外呼系統(tǒng) 雷霆電話機器人電話 湖州電銷防封卡 使用電話機器人電銷是否違法 信陽話務外呼系統(tǒng)怎么收費

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

試運行:模擬操作

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

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

當然如果你想讓自己的腳本和函數(shù)也支持模擬運行,只需要進行簡單的整合。多增加一個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
  }
}
# 首先進行模擬運行:
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$

逐步確認:逐個查詢

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

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

確認程序提供了6個選項。

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

自動對危險的操作進行操作

因為一些操作的危險系數(shù)會比其它的操作的危險系數(shù)高,所以Powershell腳本的開發(fā)者會每一條命令進行風險評估。例如Stop-Process,它會終止當前正在運行的程序或者進程。它的危險系數(shù)被設置為中等。因為正常情況下,可能會產(chǎn)生的不可恢復并且不可預知的危險。例如Exchange中的命令刪除用戶的郵件被歸類為高危險性,因為郵件一旦刪除那就意味著所有的郵件內(nèi)容都不復存在。

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

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

總結一下,就會有兩種情況。

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

您可能感興趣的文章:
  • Powershell 查詢 Windows 日志的方法
  • Powershell 查找用戶的主SMTP地址
  • powershell解決win10開始菜單和通知中心無法打開
  • Powershell 獲取特定的網(wǎng)頁信息的代碼
  • PowerShell 4.0實現(xiàn)自動化設置服務器
  • 揭秘PowerShell 5.0新特性和新功能
  • Windows 8 中的 PowerShell 3.0
  • PowerShell使用小技巧分享
  • 使用PowerShell修改注冊表
  • PowerShell用戶認證Function實例代碼

標簽:湛江 六盤水 德州 山南 岳陽 濟南 鶴崗 運城

巨人網(wǎng)絡通訊聲明:本文標題《Powershell錯誤處理之what-if》,本文關鍵詞  Powershell,錯誤,處理,之,what-if,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Powershell錯誤處理之what-if》相關的同類信息!
  • 本頁收集關于Powershell錯誤處理之what-if的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    高唐县| 隆昌县| 兰考县| 巴彦淖尔市| 余干县| 汨罗市| 南漳县| 临颍县| 达拉特旗| 本溪| 云安县| 安阳县| 时尚| 枣阳市| 衡水市| 东兰县| 泰安市| 蕉岭县| 大冶市| 普安县| 苏州市| 郸城县| 武冈市| 武乡县| 左云县| 旌德县| 静乐县| 中西区| 闻喜县| 海原县| 大冶市| 乌兰浩特市| 同江市| 清涧县| 江都市| 江华| 定远县| 汉川市| 宝兴县| 辽中县| 固始县|