Le script est assez simple. Essaie simplement de démarrer un tas de services Windows. L'exécution fonctionne localement correctement sur la machine cible. Le script s'exécute également très bien lorsqu'il est effectué via PsExec, il ne revient jamais jusqu'à ce que j'appuie sur la touche "Entrée" de mon invite CMD. Il s'agit d'un problème, car cela est appelé à partir de TeamCity, et cela fait que l'agent se bloque en attendant le retour de PsExec.
J'ai essayé ce qui suit:
- Ajout d'un
exit
etexit 0
à la fin du script Powershell - Ajout d'un
< NUL
à la fin de l'appel PsExec, selon la réponse à cette question SF - Ajout d'une
>
redirection stdout
Voici comment j'appelle réellement psexec:
psexec \\target -u domain\username -p password powershell c:\path\script.ps1
Peu importe ce que je fais, il se bloque jusqu'à ce que je le localement sur l'invite cmd. Après avoir appuyé sur Entrée, je reçois le message:
powershell exited on target with error code 0.
Je sais que la réponse arrive tard, elle aurait déjà été trouvée, sinon elle pourrait être utile pour les futurs visiteurs.
STDIN doit être redirigé dans l'exécution PowerShell afin de pouvoir provenir du blocage (Ici, il attend dans STDIN). pour pouvoir le faire, utilisez -inputformat none
powershell -inputformat none -File powershell_script.ps1
marchera.Vérifier - https://connect.microsoft.com/PowerShell/feedback/details/572313/powershell-exe-can-hang-if-stdin-is-redirected
la source
Résout également le problème.
Le
-d
drapeau de psexec est comme "exécuter et quitter" de manière non interactive:la source
Powershell ne sort pas. Essayez cette ligne de commande
la source
Je courais
psexec
avec le script VBS et la solution marquée comme le meilleur (EX:psexec \\target -u domain\username -p password cmd /c "echo . | powershell c:\path\script.ps1"
) travaille pour moi que pendant chaque 3ème ou si exécuter. Je continuais à creuser et j'ai trouvé la description de chaque interrupteurJ'ai décidé d'essayer "-s" et que ce qui a fonctionné pour moi à chaque fois Voici mon exemple:
la source