1 votes

Exécution d'un script PowerShell via un fichier batch

Je suis en train d'essayer d'exécuter un script PowerShell à travers un fichier batch, pour le moment je suis juste en train de tester pour le faire fonctionner donc le fichier .ps1 est simplement un script hello world.

Cela fonctionne presque bien, sauf qu'il y a un problème à résoudre :

Je suis en train d'essayer d'avoir le fichier .ps1 stocké dans un emplacement distant (sur un NAS partagé pour être précis). Cela fonctionne lorsque j'ai le fichier .ps1 enregistré localement et que j'indique au .bat le chemin du fichier local .ps1.

Cependant maintenant que le fichier .ps1 est à l'emplacement distant, je me retrouve avec l'erreur suivante ;

"Le fichier (chemin d'accès) ne peut pas être chargé. Le fichier (chemin d'accès) n'est pas signé numériquement. Le script ne s'exécutera pas sur le système"

Je suis conscient des politiques d'exécution et les miennes sont les suivantes ;

MachinePolicy  =   RemoteSigned
UserPolicy     =   Undefined
Process        =   Undefined
CurrentUser    =   RemoteSigned
LocalMachine   =   Bypass

J'ai essayé de changer CurrentUser en Bypass mais je me retrouve avec ce qui suit ;

Windows Powershell a mis à jour votre politique d'exécution avec succès, mais le paramètre est remplacé par une politique définie à un niveau de portée plus spécifique

Capture d'écran de l'erreur ci-dessus

Toute idée serait grandement appréciée!

Désolé si c'est beaucoup d'informations ! Si quelque chose n'est pas clair, n'hésitez pas à me demander de clarifier ! Je suis assez nouveau dans tout cela !

4voto

megamorf Points 2188

Vous pouvez toujours exécuter le script - il suffit de dire à PowerShell de contourner la stratégie d'exécution du système comme ceci :

powershell.exe -executionpolicy bypass -file \\server\share\yourscript.ps1

0voto

Krab.Koyal Points 41

Je pense que la stratégie de groupe configurée par l'entreprise impose la politique de révocation de toute exécution de script à partir de l'emplacement distant. Veuillez vérifier la stratégie de groupe dans les outils d'administration.

0voto

LPChip Points 53736

L'autre réponse pourrait en fait être la réponse, mais au cas où vous (ou quelqu'un d'autre) chercheriez une solution de contournement, la voici.

Dans votre fichier batch, commencez par copier le fichier .ps1 dans un dossier local, tel que C:\TEMP, puis exécutez-le en utilisant start c:\temp\Mon_Script.ps1

La commande start fera fonctionner le script de la même manière que si vous le double-cliquiez dans l'explorateur. Vous pourriez en fait ne pas avoir besoin de le copier localement si vous avez utilisé une autre manière de démarrer le fichier.

0voto

infixed Points 809

Pour l'aspect .bat uniquement, une solution de contournement consisterait à créer un fichier .bat qui utilise des instructions echo pour construire un script powershell local, puis exécuter le script local

La praticité de cette solution dépendrait de la complexité requise pour le script.

0voto

Nermal Points 1

C'est ce que j'utilise :

Powershell standard, sans élévation des droits administratifs :

PowerShell.exe -Command "& {Start-Process PowerShell.exe -ArgumentList '-ExecutionPolicy Bypass -File ""c:\your\file\path\PSscript.ps1""'}"

Demande d'informations d'identification administratives :

PowerShell.exe -Command "& {Start-Process PowerShell.exe -ArgumentList '-ExecutionPolicy Bypass -File ""c:\your\file\path\PSscript.ps1""' -Verb RunAs}"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X