web-dev-qa-db-fra.com

Comment exécuter PowerShell dans CMD

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?

41
XiaoYao

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

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.

6
Matt

Essayez juste:

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