Ich versuche, ein PowerShell-Skript in der Befehlszeile von cmd auszuführen. Jemand hat mir ein Beispiel gegeben und es hat funktioniert:
powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"
Das Problem ist jedoch, dass mein PowerShell-Skript Eingabeparameter enthält. Deshalb habe ich es versucht, aber es funktioniert nicht:
powershell.exe -noexit "& 'D:\Work\SQLExecutor.ps1 -gettedServerName "MY-PC" ' "
Der Fehler ist:
Der Begriff "D:\Work\SQLExecutor.ps1 -gettedServerName" MY-PC "" wird nicht als Name eines Cmdlets, einer Funktion,
Wie kann ich dieses Problem beheben?
Sie müssen die Argumente vom Dateipfad trennen:
powershell.exe -noexit "& 'D:\Work\SQLExecutor.ps1 ' -gettedServerName 'MY-PC'"
Eine weitere Option, die die Syntax mithilfe des File-Parameters und der Positionsparameter möglicherweise vereinfacht:
powershell.exe -noexit -file "D:\Work\SQLExecutor.ps1" "MY-PC"
Ich möchte Folgendes zu Shay Levys richtiger Antwort hinzufügen: Sie können Ihr Leben einfacher machen, wenn Sie ein kleines Batch-Skript run.cmd
Erstellen, um Ihr Powershell-Skript zu starten:
@echo off & setlocal
set batchPath=%~dp0
powershell.exe -noexit -file "%batchPath%SQLExecutor.ps1" "MY-PC"
Geben Sie es in den gleichen Pfad wie SQLExecutor.ps1
Ein und starten Sie es von nun an, indem Sie einfach auf run.cmd
Doppelklicken.
Anmerkung:
Wenn Sie Befehlszeilenargumente im run.cmd-Stapel benötigen, übergeben Sie diese einfach als %1
... %9
(Oder verwenden Sie %*
, Um alle Parameter zu übergeben) an das Powershell-Skript dh.powershell.exe -noexit -file "%batchPath%SQLExecutor.ps1" %*
Die Variable batchPath
enthält den Ausführungspfad der Batch-Datei selbst (hierfür wird der Ausdruck %~dp0
Verwendet). Sie müssen das Powershell-Skript also nur in den gleichen Pfad wie die aufrufende Batch-Datei einfügen.
Versuchen Sie einfach:
powershell.exe -noexit D:\Work\SQLExecutor.ps1 -gettedServerName "MY-PC"