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?
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
.
Essayez d’appeler cmd /c C:\MyDirectory\MyCommand.cmd
- cela devrait fonctionner.
Allez dans C:\MyDirectory et essayez ceci:
.\MyCommand.cmd
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!