Question Lancer un PS sans attendre le retour

Plus d'informations
il y a 11 ans 11 mois #17267 par ANTRI Mohamed
Bonjour,

Avez-vous regardez au niveau du [code:1]Threading[/code:1] ?

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

Plus d'informations
il y a 11 ans 11 mois #17268 par Laurent Dardenne
bvivi57 écrit:

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

Le paramètre -NoNewWindow exécute le nouveau process en tant que process fils, son absence exécute un process 'autonome' (la mort du process père ne tue pas le process fils).
Pour créer ce nouveau process essaie avec le paramètre -WindowStyle hidden. N'ayant pas de service 'launcher', je ne peux pour le moment faire ce test.
bvivi57 écrit:

Concernant \"WMI DETACHED_PROCESS\", je suis un peu perdu.

Pour WMI la classe Win32_Process permet de créer des process en spécifiant le mode de création désiré, mais pour le moment je penche plus pour un pb de contexte dû au service.
WMI étant un autre service on simule une 'délégation', ensuite des pb de droits peuvnet se greffer sur cette approche.

Une autre piste, en mode bricole, exécuter le script dans une PSsession puis s'en déconnecter, ou encore utiliser un ScheduledJob (qui a une limite : le script ne pourra faire de SendMessage, une tâche planifié n'a pas de pompe de message).

ANTRI Mohamed écrit:

Avez-vous regardez au niveau du [code:1]Threading[/code:1] ?

C'est à dire ?
Le pb est au niveau du process, il me semble que de descendre d'un niveau ne changera pas la donne.

Tutoriels PowerShell

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

Plus d'informations
il y a 11 ans 11 mois #17270 par Burgun
Merci encore pour votre aide.

Voici ce que j'ai pu observer :

1 ) Avec ce code :

[code:1]$ScriptPath = split-path $SCRIPT:MyInvocation.MyCommand.Path -parent
Set-Location -Path $ScriptPath
\"$ScriptPath\SecondScript.ps1\" -WorkingDirectory $ScriptPath -WindowStyle hidden[/code:1]

- Lancement depuis une console PS :
Fonctionne parfaitement, le premier script n'attend pas le retour du second.

- Lancement depuis le service :
Pas d'erreur, le premier script se termine immédiatement mais le second script n'est jamais lancé....le contenu du premier script est déroulé, mais le second script ne semble jamais se lancer.

2) Avec ce code:

[code:1]
$ScriptPath = split-path $SCRIPT:MyInvocation.MyCommand.Path -parent
Set-Location -Path $ScriptPath

start-process powershell.exe \"$ScriptPath\secondscript.ps1\" -WorkingDirectory $ScriptPath -WindowStyle hidden -LoadUserProfile[/code:1]

- Lancement depuis une console PS :
Fonctionne parfaitement, le premier script n'attend pas le retour du second.

- Lancement depuis le service :
Le second script est bien lancé, mais le premier script ne rend pas la main avant la fin du second....

A savoir qu'un lancement par le service exécute la commande suivante :

[code:1]%systemroot%\system32\windowspowershell\v1.0\powershell.exe -nologo -file \"D:\Scripts\test\Securite\PremierScriptps1\"[/code:1]

Et pour le mode bricole : c'est avec une tache plannifiée que je tourne actuellement pour contourner le problème.
Je configure une tache plannifiée sur le serveur qui exécute le second script, mais je parametre pas d'options pour les conditions d'exécution. Je met simplement dans mon premier script les commandes necessaires pour lancer la tache plannifiée....

Message édité par: bvivi57, à: 2/04/14 19:25<br><br>Message édité par: bvivi57, à: 2/04/14 19:29

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

Plus d'informations
il y a 11 ans 11 mois #17271 par Laurent Dardenne
bvivi57 écrit:

- Lancement depuis le service :
Le second script est bien lancé, mais le premier script ne rend pas la main avant la fin du second....

Reste à essayer avec WMI.
A moins de forcer, dans le premier script, la sortie via :
[code:1]
$host.SetShouldExit($exitcode)
[/code:1]
bvivi57 écrit:

A savoir qu'un lancement par le service exécute la commande suivante :

Un simple {start-sleep -S 10} suffit.

Tutoriels PowerShell

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

Plus d'informations
il y a 11 ans 11 mois #17325 par Laurent Dardenne
As-tu trouvé une solution ?

Tutoriels PowerShell

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

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