麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > PowerShell > 正文

淺談PowerShell 捕獲錯誤

2020-05-30 20:20:51
字體:
來源:轉載
供稿:網友

之前的文章我們演示了如何使用 Windows PowerShell 構建相當高級的清單工具。我創建的工具提供了多個有關輸出的選項,這應歸功于外殼的內置功能和將函數應用于對象。

我所創建的函數有一個無可否認的弱點:它不能適度處理可能發生的任何錯誤(例如連接或權限問題)。這正是我要在本期的 Windows PowerShell 專欄中加以解決的,我將介紹 Windows PowerShell 所提供的錯誤處理功能。

設置 Trap

在 Windows PowerShell 中,Trap 關鍵字定義一個錯誤處理程序。當您的腳本中出現異常時,外殼會檢查是否已經定義 Trap,這意味著它必須在發生任何異常之前出現在腳本中。對于本演示,我將整理出一個會產生連接性問題的測試腳本:我將使用 Get-WmiObject 連接網絡中并不存在的計算機名。我的目標是讓錯誤 Trap 將無效計算機名寫出到一個文件中,從而為我提供一個記錄了無效計算機名的文件。我還將加入到兩個有效計算機的連接(我將使用 localhost)。請參見圖 1 中的腳本。

添加 Trap

trap { write-host "Error connecting to $computer" -fore red "$computer" | out-file c:/demo/errors.txt -append  continue}$computer = "localhost"get-wmiobject win32_operatingsystem -comp $computer $computer = "server2"get-wmiobject win32_operatingsystem -comp $computer $computer = "localhost"get-wmiobject win32_operatingsystem -comp $computer

此腳本的輸出(如圖 2 所示)與我的期望不符。請注意 "Error connecting to…" 消息不顯示。也沒有創建 Errors.txt 文件。也就是說,根本沒有執行我的 Trap。究竟發生了什么?

圖 2 這不是我所希望的輸出!

停止!

關鍵在于了解正常外殼錯誤消息與異常不同(分為非終止錯誤和終止錯誤。終止錯誤會停止管道的執行并產生異常)。只有異常才能被捕獲。出現錯誤時,外殼會檢查其內置的 $ErrorActionPreference 變量以確定自己要執行的操作。該變量默認含有 "Continue" 值,它表示“顯示錯誤消息并繼續”。將此變量更改為 "Stop" 會使其顯示錯誤消息并產生可捕獲的異常。但這意味著您腳本中的任何錯誤也將執行該操作。

更好的方法是只讓您認為可能會引發問題的 cmdlet 使用“停止”行為。可以使用 –ErrorAction(或 –EA)參數(一個所有 cmdlet 都支持的常見參數)完成此操作。圖 3 顯示了此腳本的修訂版本。它將按照預期方式工作,產生的輸出如圖 4 所示。

 使用 -ErrorAction

trap { write-host "Error connecting to $computer" -fore red  "$computer" | out-file c:/demo/errors.txt -append  continue}$computer = "localhost"get-wmiobject win32_operatingsystem -comp $computer -ea stop$computer = "server2"get-wmiobject win32_operatingsystem -comp $computer -ea stop$computer = "localhost"get-wmiobject win32_operatingsystem -comp $computer -ea stop            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久精品成人影院 | 亚洲一区二区观看播放 | 成人做爰www免费看 欧美精品免费一区二区三区 | 久久久久免费精品国产小说色大师 | xxxx hd video 69| 亚洲人成中文字幕在线观看 | 草b视频在线观看 | 特大黑人videos与另类娇小 | 久久久久久免费免费 | 成人在线精品视频 | 一级尻逼视频 | 精品久久久久久亚洲精品 | 国产黄色毛片 | 欧美一级成人一区二区三区 | 92看片淫黄大片欧美看国产片 | www.成人免费视频 | 欧美大片一级毛片 | 亚洲午夜激情网 | 国产小视频在线观看 | 色骚综合| 九九热精品免费 | 久久精品久久精品国产大片 | 福利在线免费视频 | 成人午夜视频免费 | 成人三级在线播放 | 成人永久免费视频 | 中文在线观看www | 国产精品美女久久久久久不卡 | 亚洲成人福利在线观看 | 99精品视频在线观看免费播放 | 久久精品免费网站 | 羞羞视频免费入口网站 | 国产成年人在线观看 | 国产91在线播放九色 | lutube成人福利在线观看 | 一级黄色电影网站 | h视频免费在线观看 | 国产视频在线播放 | 久久精品一区二区三区不卡牛牛 | 黄色片免费看看 | 久久情爱网 |