Les Variables en Début de Travail
J'ai ce code powershell, qui j'aimerais travailler. Elle ne dispose actuellement pas d'évaluer l' $agent variable.
foreach($agent in $agentcomputers){
Write-Output 'Starting agent on '$agent
#psexc to start the agent
Start-Job -ScriptBlock {& psexec $agent c:\grinder\examples\startAgent.cmd}
}
Cela ressemble à mon problème, sauf que je ne suis pas d'appel externe script powershell.
https://sqlblog.org/2011/01/29/powershell-start-job-scriptblock-sad-panda-face
J'ai essayé d'ajouter que, à l'aide de $args[0] $de l'agent et de l'ajout de l'-ArgumentList paramètres, mais cela ne fonctionne pas.
Merci pour toute aide que vous pouvez fournir.
Modifications/Réponses...
C'est $agentcomputers, juste une liste de noms d'ordinateur. Chacun sur sa propre ligne.
$agentcomputers = Get-Content c:\grinder-dist\agent-computers.txt
J'ai aussi essayé cette - et $args[0] n'a pas d'évaluer
Start-Job -ScriptBlock {& psexec $args[0] c:\grinder\examples\startAgent.cmd} -ArgumentList @($agent)
Ce qui est stocké dans
Vous aurez besoin d'utiliser la ArgumentList paramètre à l'aide de la
Vous pouvez également modifier la portée de votre $agent de variable, je pense: $global:de l'agent.
la portée mondiale ne fonctionne pas comme il est exécuté dans un autre PowerShell.exe processus. Les données sont sérialisées et passé à l'arrière-plan.
Vous pouvez avoir besoin des barres obliques inverses selon psexec documentation
$agent
?Vous aurez besoin d'utiliser la ArgumentList paramètre à l'aide de la
$args
tableau ou d'un bloc param.Vous pouvez également modifier la portée de votre $agent de variable, je pense: $global:de l'agent.
la portée mondiale ne fonctionne pas comme il est exécuté dans un autre PowerShell.exe processus. Les données sont sérialisées et passé à l'arrière-plan.
Vous pouvez avoir besoin des barres obliques inverses selon psexec documentation
"\\$args[0]"
. Assurez-vous que la commande fonctionne par lui-même sans tâche en arrière-plan.OriginalL'auteur Sam | 2012-04-17
Vous devez vous connecter pour publier un commentaire.
Ici sont les 3 façons différentes, je le ferais.
Tout d'abord, tous alignés et jolie.
Ou vous pouvez simplement le mettre sur une seule ligne, sans créer de toutes les variables.
Et dans ce dernier exemple, vous pouvez gérer le nombre de threads s'exécutent en même temps en le faisant de cette manière.
OriginalL'auteur T.CK
Voici la solution. Comme Andy a dit, j'avais besoin d'utiliser $args tableau avec le paramètre-ArgumentList. Cet autre fil a été très utile: Powershell: passage de paramètres à un emploi
OriginalL'auteur Sam