PowerShell uitvoeren in CMD

Ik probeer een PowerShell-script uit te voeren in de cmd-opdrachtregel. Iemand gaf me een voorbeeld en het werkte:

powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"

Maar het probleem is dat mijn PowerShell-script invoerparameters heeft, dus ik heb het geprobeerd, maar het werkt niet:

powershell.exe -noexit "& 'D:\Work\SQLExecutor.ps1 -gettedServerName "MY-PC" ' "

De fout is:

De term ‘D:\Work\SQLExecutor.ps1 -gettedServerName “MY-PC” ‘ wordt niet herkend als de naam van een cmdlet, functie,

Hoe kan ik dit probleem oplossen?


Antwoord 1, autoriteit 100%

Je moet de argumenten scheiden van het bestandspad:

powershell.exe -noexit "& 'D:\Work\SQLExecutor.ps1 ' -gettedServerName 'MY-PC'"

Een andere optie die de syntaxis kan vereenvoudigen met behulp van de File-parameter en positionele parameters:

powershell.exe -noexit -file "D:\Work\SQLExecutor.ps1" "MY-PC"

Antwoord 2, autoriteit 10%

Ik zou het volgende willen toevoegen aan het juiste antwoord van Shay Levy:
U kunt uw leven gemakkelijker maken als u een klein batchscript run.cmdmaakt om uw powershell-script te starten:

run.cmd

@echo off & setlocal
set batchPath=%~dp0
powershell.exe -noexit -file "%batchPath%SQLExecutor.ps1" "MY-PC"

Zet het op hetzelfde pad als SQLExecutor.ps1En vanaf nu kunt u het uitvoeren door eenvoudig te dubbelklikken op run.cmd.


Opmerking:

  • Als u opdrachtregelargumenten in de RUN.CMD-batch nodig heeft, passeert u ze eenvoudigweg als %1%9(OF GEBRUIK %*om alle parameters door te geven) naar het PowerShell-script, dat wil zeggen
    powershell.exe -noexit -file "%batchPath%SQLExecutor.ps1" %*

  • De variabele batchPathBevat het uitvoerende pad van het batchbestand zelf (dit is wat de uitdrukking %~dp0wordt gebruikt voor). Dus u plaatst het PowerShell-script op hetzelfde pad als het batchbestand.


Antwoord 3, Autoriteit 5%

Probeer alleen:

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

Other episodes