web-dev-qa-db-ger.com

Führen Sie die .cmd-Datei über PowerShell aus

Ich versuche, eine .cmd-Datei auf einem Remote-Server mit PowerShell auszuführen.

In meinem .ps1-Skript habe ich Folgendes versucht:

C:\MyDirectory\MyCommand.cmd

Es führt zu diesem Fehler:

C:\MyDirectory\MyCommand.cmd is not recognized as the name of a cmdlet,
function, script file, or operable program.

Und das

Invoke-Command C:\MyDirectory\MyCommand.cmd

führt zu diesem Fehler:

Invoke-Command : Parameter set cannot be resolved using the specified named
parameters.

Ich muss keine Parameter an das PowerShell-Skript übergeben. Was ist die richtige Syntax, nach der ich suche?

23
Declan McNulty

Invoke-Item sucht den Standard-Handler für den Dateityp und fordert ihn auf, ihn auszuführen.

Es ist im Grunde dasselbe wie das Doppelklicken auf die Datei im Explorer oder die Verwendung von start.exe.

16
alroc

Versuchen Sie, cmd /c C:\MyDirectory\MyCommand.cmd aufzurufen - das sollte funktionieren.

9
mirabilos

Gehen Sie zu C:\MyDirectory und versuchen Sie Folgendes:

.\MyCommand.cmd
3

Zum Ausführen oder Konvertieren von Batchdateien in PowerShell (insbesondere wenn Sie alle geplanten Task-Skripts mit einem Zertifikat signieren möchten), erstelle ich einfach ein PowerShell-Skript, z. B. "deletefolders.ps1".

Geben Sie Folgendes in das Skript ein:

cmd.exe /c "rd /s /q C:\#TEMP\test1"

cmd.exe /c "rd /s /q C:\#TEMP\test2"

cmd.exe /c "rd /s /q C:\#TEMP\test3"

* Jeder Befehl muss in eine neue Zeile gestellt werden, wobei cmd.exe erneut aufgerufen wird.

Dieses Skript kann jetzt signiert und von PowerShell aus ausgeführt werden, wobei die Befehle direkt an den Befehl Prompt/cmd ausgegeben werden.

Dies ist viel sicherer als das Ausführen von Batch-Dateien!

0
Armand G.