it-swarm.com.de

Ausführen von PowerShell in CMD

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?

41
XiaoYao

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"
65
Shay Levy

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.

6
Matt

Versuchen Sie einfach:

powershell.exe -noexit D:\Work\SQLExecutor.ps1 -gettedServerName "MY-PC"
4
CB.