Konsolen-Apps funktionieren nicht in Powershell

Konsolen-Apps funktionieren nicht in Powershell

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, ipconfigerhalte 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, PATHexistierte die Variable nicht einmal. Also habe ich sie erstellt und sichergestellt, dass das Verzeichnis, das sie enthielt, pscpdort aufgeführt war. Immer noch kein Erfolg.

Das Ausführen derselben Befehle (ipconfig oder pscp) in cmd.exe funktioniert wie erwartet, nachdem ich der PATHVariable (%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;) einige grundlegende Einträge hinzugefügt habe.

$env:pathgibt in Powershell die Werte der PATHVariablen zurück, aber Powershell führt trotzdem keine Programme aus, die sich in diesen Verzeichnissen befinden. get-host | select versiongibt 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 -NoProfileund 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 ipconfigdort auszuführen. Wenn es in CMD funktioniert, aber nicht in PowerShell, vergleichen Sie die in beiden gefundenen Umgebungen. Am einfachsten ist es wahrscheinlich, es setin CMD und cmd.exe /C setim 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;

verwandte Informationen