Ich habe eine Windows Server 2003 R2-Box geerbt. Ich habe ein Powershell-Skript, das ich auf der Maschine zum Laufen bringen müsste, aber mit dem System scheint etwas ganz und gar nicht zu stimmen. Wenn ich beispielsweise eine Powershell-Konsole öffne und Folgendes eingib, ipconfig
erhalte ich die folgende Antwort:
The term 'ipconfig' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.
Mein Powershell-Skript versucht, pscp.exe (aus dem Putty-Projekt) aufzurufen und erhält den gleichen Fehler wie oben.
Mein erster Verdacht war, dass es sich um ein Pfadproblem handelte, und tatsächlich, als ich das Fenster mit den Umgebungsvariablen öffnete, PATH
existierte die Variable nicht einmal. Also habe ich sie erstellt und sichergestellt, dass das Verzeichnis, das sie enthielt, pscp
dort aufgeführt war. Immer noch kein Erfolg.
Das Ausführen derselben Befehle (ipconfig oder pscp) in cmd.exe funktioniert wie erwartet, nachdem ich der PATH
Variable (%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;) einige grundlegende Einträge hinzugefügt habe.
$env:path
gibt in Powershell die Werte der PATH
Variablen zurück, aber Powershell führt trotzdem keine Programme aus, die sich in diesen Verzeichnissen befinden. get-host | select version
gibt 1.0.0.0 zurück.
Irgendwelche Hinweise?
Antwort1
Es klingt, als ob Ihre Umgebung ein wenig durcheinander ist. Hier sind ein paar zusätzliche Schritte zur Fehlerbehebung, hoffentlich liefert einer davon nützlichere Informationen:
Versuchen Sie, den Befehl unter Verwendung des vollständigen Pfads auszuführen: c:\windows\system32\ipconfig.exe
Versuchen Sie das Cmdlet „invoke-expression“:
invoke-expression -command "ipconfig"
oder:
invoke-expression -command "c:\windows\system32\ipconfig.exe"
Versuchen Sie es mit dem .Net-Prozessanbieter (Sie können die Ergebnisse des Aufrufs nicht sehen, erhalten aber einige möglicherweise nützliche Informationen dazu):
[System.Diagnostics.Process]::Start("c:\windows\system32\ipconfig.exe")
Antwort2
Versuchen Sie es auszuführen powershell -NoProfile
und prüfen Sie, ob es funktioniert. Wenn ja, dann liegt Ihr Problem am Profilskript, das Sie mit bearbeiten können notepad $profile
.
Versuchen Sie, ein CMD-Fenster zu öffnen und es ipconfig
dort auszuführen. Wenn es in CMD funktioniert, aber nicht in PowerShell, vergleichen Sie die in beiden gefundenen Umgebungen. Am einfachsten ist es wahrscheinlich, es set
in CMD und cmd.exe /C set
im PowerShell-Fenster auszuführen und die Ergebnisse zu vergleichen.
Antwort3
Es ist ein wenig seltsam, Ihren PATH in Bezug auf andere Umgebungsvariablen ausgedrückt zu sehen. Ich frage mich, ob das die Dinge durcheinander bringen könnte.
Folgendes würde ich beispielsweise in Ihrer PATH-Variable erwarten (vorausgesetzt, C: ist Ihr primäres Installationslaufwerk):
PATH=C:\Windows\System32;C:\Windows;C:\Windows\System32\Wbem;