控制台應用程式無法在 Powershell 中執行

控制台應用程式無法在 Powershell 中執行

我繼承了一台 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;

相關內容