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