Question Lancer un PS sans attendre le retour

Plus d'informations
il y a 11 ans 11 mois #17253 par Burgun
Bonjour,

Je me permet de demander de l'aide. Je suis face à un problème que je n'arrive pas à résoudre.

Nous utilisons une solution de supervision (zabbix) sous la forme d'un binaire lancé par un service windows avec un compte spécifique, membre du domaine ou est enregistré le serveur (Windows 2012 PS V4). Ce compte est administrateur du serveur.

Nous avons la possibilité d'utiliser ce binaire pour lancer n'importe quel executable présent sur le serveur.

Nous lancons donc des scripts powershell chargé de remonter différentes informations sous la forme:

[code:1]%systemroot%\system32\windowspowershell\v1.0\powershell.exe -nologo -file monscript.ps1[/code:1]

Un peu comme le ferait une tache plannifiée.

La seul contrainte c'est que le script ne doit pas dépasser 30 seconde d'exécution.

Hors pour certains cas de figure, nous sommes obligé d'avoir un temp de traitement plus long. Nous avons donc pensé à ce que le binaire de la solution de supervision lance un premier script powershell, qui lancerait lui meme un autre script powershell sans attendre le retour.

Ainsi, le binaire de la solution de supervision ne lance qu'un tout petit script qui lui retourne une valeur très rapidement, le vrai traitement etant réalisé par le second script powershell appelé par le premier.

Pour que cela fonctionne, il faut que le premier script powershell, lance le second sans attendre de résultat. Nous voulons juste que le second script soit lancé, c'est tout.

Mais impossible dans ce cas de figure de faire en sorte que le premier script PS se termine sans attendre la fin du second.
Nous avons essayé les méthodes suivantes ;

- invoke-command \"powershell.exe secondscript.ps1\"

- start-job -scriptblock \"{powershell.Exe -NonInteractive -NoLogo -NoProfile secondscript.ps1\"

- start-process powershell.exe \"secondscript.ps1\" -WorkingDirectory $ScriptPath -NoNewWindow

- cmd /c \"powershell.exe secondscript.ps1\"

Rien ne fonctionne, soit le second script ne s'exécute pas, soit le premier script attend le retour du second.

Chose etrange, lorsque nous utilisons start-process, si l'on ne précise pas -NoNewWindow ou -LoadUserProfile, le second script ne s'éxécute pas (pas d'erreur, mais rien ne se passe)

Je sais que tout cela est un peu brouillon, mais la question finale reste de savoir comment faire pour appeler depuis un script powershell, un second script powershell sans attendre son résultat tout en permettant au premier script de se terminer dès le second script lancé.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 11 mois #17254 par ANTRI Mohamed
Bonsoir,

J'ai quelques idées qui me vienne à l'esprit mais je ne suis pas chez moi je ne peux donc pas encore tester. Avez-vous essayez de lancer une commande de ce type : [code:1] %systemroot%\system32\windowspowershell\v1.0\powershell.exe -nologo -file votresecondscript.ps1[/code:1]

directement dans votre premier script ?

Sinon je pense qu'il faudrait regarder du côté des workflow ou du threading grâce au Framework .NET.

Si j'ai le temps je testerai demain et vous tiens informé.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 11 mois #17255 par Burgun
Merci pour votre

La commande:
[code:1] %systemroot%\system32\windowspowershell\v1.0\powershell.exe -nologo -file votresecondscript.ps1[/code:1]

lance le second script mais continu d'attendre le résultat de ce dernier......:(

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 11 mois #17257 par Laurent Dardenne
Salut,
essai via WMI DETACHED_PROCESS , un point à vérifier .

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 11 mois #17262 par Laurent Dardenne
Lorsque le service exécute le premier process, la fenêtre de la console PS est-elle visible ?

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 11 mois #17266 par Burgun
Bonjour,
Merci de votre réponse.

Etant donné que le premier script est lancé par un service avec session fermé, je n'ai pas de visibilité sur les fenêtres.

Si je lance une simulation depuis une session TS avec ce code

[code:1]$ScriptPath = split-path $SCRIPT:MyInvocation.MyCommand.Path -parent
Set-Location -Path $ScriptPath
powershell.exe -nologo -file \"monsecondscript.ps1\"[/code:1]

Je ne vois pas de console PS supplémentaire autre que celle que celle que j'utilise pour le lancement du premier script.

Concernant \"WMI DETACHED_PROCESS\", je suis un peu perdu.
Je vais lire tout ça pour voir si je comprend quelque chose.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.108 secondes
Propulsé par Kunena