web-dev-qa-db-fra.com

Exécuter un fichier .cmd via PowerShell

J'essaie d'exécuter un fichier .cmd sur un serveur distant avec PowerShell.

Dans mon script .ps1, j'ai essayé ceci:

C:\MyDirectory\MyCommand.cmd

Il en résulte cette erreur:

C:\MyDirectory\MyCommand.cmd is not recognized as the name of a cmdlet,
function, script file, or operable program.

Et ça

Invoke-Command C:\MyDirectory\MyCommand.cmd

entraîne cette erreur:

Invoke-Command : Parameter set cannot be resolved using the specified named
parameters.

Je n'ai pas besoin de transmettre de paramètres au script PowerShell. Quelle est la syntaxe correcte que je recherche?

23
Declan McNulty

Invoke-Item recherchera le gestionnaire par défaut du type de fichier et lui dira de l'exécuter.

En gros, cela revient à double-cliquer sur le fichier dans l'explorateur ou à utiliser start.exe.

16
alroc

Essayez d’appeler cmd /c C:\MyDirectory\MyCommand.cmd - cela devrait fonctionner.

9
mirabilos

Allez dans C:\MyDirectory et essayez ceci:

.\MyCommand.cmd
3
Gustavo A Sanchez

Pour exécuter ou convertir des fichiers de commandes en PowerShell (en particulier si vous souhaitez signer tous vos scripts de tâches planifiés avec un certificat), je crée simplement un script PowerShell, par exemple, deletefolders.ps1.

Entrez ce qui suit dans le script:

cmd.exe /c "rd /s /q C:\#TEMP\test1"

cmd.exe /c "rd /s /q C:\#TEMP\test2"

cmd.exe /c "rd /s /q C:\#TEMP\test3"

* Chaque commande doit être placée sur une nouvelle ligne, en appelant cmd.exe à nouveau.

Ce script peut désormais être signé et exécuté à partir de PowerShell, en générant directement les commandes pour une commande Prompt/cmd.

C'est un moyen beaucoup plus sûr que d'exécuter des fichiers de commandes!

0
Armand G.