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.cmd
maakt 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.ps1
En 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
batchPath
Bevat het uitvoerende pad van het batchbestand zelf (dit is wat de uitdrukking%~dp0
wordt 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"