我繼承了一台 Windows Server 2003 r2 機器。我有一個需要在電腦上運行的 Powershell 腳本,但係統似乎出現了嚴重錯誤。例如,開啟 Powershell 控制台並輸入ipconfig
會得到以下回應:
The term 'ipconfig' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.
我的 Powershell 腳本嘗試呼叫 pscp.exe(來自 putty 專案),並且出現與上面相同的錯誤。
我首先懷疑是路徑問題,果然,當我打開環境變數視窗時,PATH
變數根本不存在。所以我創建了它,並確保pscp
其中列出了包含的目錄。還是沒有骰子。
PATH
一旦我為變數添加了一些基本條目 (%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;),在 cmd.exe 中執行相同的命令(ipconfig 或 pscp)就會按預期工作。
$env:path
在 Powershell 中傳回變數的值PATH
,但 powershell 仍然不會執行這些目錄中的程式。 get-host | select version
返回 1.0.0.0。
有什麼提示嗎?
答案1
聽起來你的環境有點混亂。以下是一些額外的故障排除步驟,希望其中一個能提供更多有用的信息:
嘗試使用完整路徑執行指令:c:\windows\system32\ipconfig.exe
嘗試呼叫表達式 cmdlet:
invoke-expression -command "ipconfig"
或者:
invoke-expression -command "c:\windows\system32\ipconfig.exe"
嘗試使用 .Net 進程提供者(您將無法看到呼叫的結果,但它會為您提供一些可能有用的信息):
[System.Diagnostics.Process]::Start("c:\windows\system32\ipconfig.exe")
答案2
嘗試運行powershell -NoProfile
並查看是否有效。如果是這樣。那麼您的問題是設定檔腳本,您可以使用 進行編輯notepad $profile
。
嘗試開啟 CMD 視窗並ipconfig
在那裡運行。如果它在 CMD 中有效但在 PowerShell 中無效,則比較每個中找到的環境。最簡單的方法可能是在 CMD 中運行set
並在 PowerShell 視窗中運行cmd.exe /C set
並比較結果。
答案3
看到用其他環境變數表示的 PATH 有點奇怪。我想知道這是否會讓事情變得不穩定。
例如,以下是我期望在 PATH 變數中看到的內容(假設 C: 是您的主安裝磁碟機):
PATH=C:\Windows\System32;C:\Windows;C:\Windows\System32\Wbem;