J'essaie d'exécuter un script PowerShell dans la ligne de commande cmd. Quelqu'un m'a donné un exemple et cela a fonctionné:
powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"
Mais le problème est que mon script PowerShell a des paramètres d'entrée, alors j'ai essayé, mais cela ne fonctionne pas:
powershell.exe -noexit "& 'D:\Work\SQLExecutor.ps1 -gettedServerName "MY-PC" ' "
L'erreur est:
Le terme "D:\Work\SQLExecutor.ps1 -gettedServerName" MY-PC "" n'est pas reconnu comme nom d'une applet de commande, fonction,
Comment puis-je résoudre ce problème?
Vous devez séparer les arguments du chemin du fichier:
powershell.exe -noexit "& 'D:\Work\SQLExecutor.ps1 ' -gettedServerName 'MY-PC'"
Une autre option peut faciliter la syntaxe en utilisant le paramètre File et les paramètres de position:
powershell.exe -noexit -file "D:\Work\SQLExecutor.ps1" "MY-PC"
J'aimerais ajouter ce qui suit à la bonne réponse de Shay Levy: Vous pouvez vous simplifier la vie en créant un petit script batch. run.cmd
pour lancer votre script powershell:
@echo off & setlocal
set batchPath=%~dp0
powershell.exe -noexit -file "%batchPath%SQLExecutor.ps1" "MY-PC"
Mettez le dans le même chemin que SQLExecutor.ps1
et vous pouvez maintenant l’exécuter en double-cliquant simplement sur run.cmd
.
Note:
Si vous avez besoin d’arguments de ligne de commande à l’intérieur du lot run.cmd, transmettez-les simplement sous la forme %1
... %9
(Ou utiliser %*
pour transmettre tous les paramètres) au script powershell, c.-à-d.powershell.exe -noexit -file "%batchPath%SQLExecutor.ps1" %*
La variable batchPath
contient le chemin d’exécution du fichier batch lui-même (c’est ce que l’expression %~dp0
est utilisé pour). Donc, vous venez de mettre le script PowerShell dans le même chemin que le fichier de commandes appelant.
Essayez juste:
powershell.exe -noexit D:\Work\SQLExecutor.ps1 -gettedServerName "MY-PC"