PowerShell的三大常見問題及解決方法
隨著Windows Server 2012的發(fā)布,PowerShell作為腳本語言,將成為命令行接口的新規(guī)范。擁有超過2300條命令的PowerShell可以更容易的實現(xiàn)任務自動化,為管理員節(jié)省寶貴的時間。
但是,當管理員遇到PowerShell錯誤時要怎么處理?如何才能將其修復?PowerShell專家Don Jones將通過處理一些常見的PowerShell錯誤來指導大家如何解決這些問題。
為什么PowerShell命令能夠在本地正常運行,卻無法在遠程運行?
對于管理員來說,遠程處理是在遠程計算機上運行命令的***方式。Jones甚至將PowerShell遠程處理功能稱為管理的“未來方式”。但Windows Server 2012的遠程處理有幾個困難需要克服。
解決此問題的方式有多種。首先要確認遠程運行的命令是否存在于遠程的服務器中。另外當你運行命令時,時間的準確性也相當重要。***還需要檢查一下這條命令是否是外部命令,避免遠程服務器因此而出錯。
如果所有方法都無法奏效,問題可能就是Jones所說的“環(huán)境障礙”,這需要單獨的步驟進行排錯。
為何無法比較 PowerShell的變量內(nèi)容?
無法比較PowerShell變量的內(nèi)容有多種原因。首先,某些PowerShell命令返回的結(jié)果將多于你的請求。例如,Dir命令可以返回多個對象和多種類型的對象。其次,一些命令,如$file,幾乎總是會返回多種類型的對象,而像-like這樣的PowerShell運算符則不能針對多個對象運行。
要解決這個問題,可以通過寫一條命令來枚舉文件,這樣可以讓用戶每次只比較一個對象。如果你一直在使用PowerShell,可以有多種方式來做到這一點。
一種方式是構(gòu)造法(如使用Foreach),它可以接受多個對象,然后逐個進行比較。另一種方法則是使用命令的方式(非腳本方式)來進行處理。
為什么當我嘗試訪問一個文件時,PowerShell會出錯
如果你在試圖訪問一個文件時,總是遇到問題,部分原因可能是使用PowerShell訪問文件的方式有問題。在這個問題上要牢記的最重要的一點就是大多數(shù)PowerShell命令的輸出是對象,而輸入?yún)?shù)可能無法接受整個對象。
若要解決此問題,請務必檢查命令變量的屬性以及它們包含的數(shù)據(jù)是你真正需要的。例如,使用$file是要獲得類似Fullname提供的文件路徑還是以某種形式將名稱和路徑進行組合呢?
實際上,到***你在命令中實際需要或查詢的只是其中的一到兩個屬性。