Variablen, die im Start-Job

Habe ich das powershell-code, die ich mag würde, um zu arbeiten. Es sind derzeit keine Bewertung der $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}
}

Dieser sieht ähnlich aus wie mein problem, außer das ich nicht den Aufruf eines externen powershell-Skript.

https://sqlblog.org/2011/01/29/powershell-start-job-scriptblock-sad-panda-face

Ich habe versucht, das hinzufügen, dass, mit $args[0] für $agent und hinzufügen der-ArgumentList-Parameter, aber das hat nicht funktioniert.

Vielen Dank für jede Hilfe können Sie zur Verfügung stellen.

Bearbeitungen/Replys...


Dies ist $agentcomputers, nur eine Liste der computer-Namen. Jede auf einer eigenen Zeile.

$agentcomputers = Get-Content c:\grinder-dist\agent-computers.txt

Habe ich auch schon versucht - und das $args[0] nicht bewerten

Start-Job -ScriptBlock {& psexec $args[0] c:\grinder\examples\startAgent.cmd} -ArgumentList @($agent)
Was gespeichert wird, in $agent?
Sie müssen den ArgumentList-parameter entweder über die $args array oder ein param-block.
Sie könnte auch den Umfang Ihrer Dollar-agent-variable, denke ich: $global:agent.
die Globale Reichweite wird nicht funktionieren, da es ausgeführt wird, in einem separaten PowerShell.exe Prozess. Die Daten serialisiert und an den Prozess im hintergrund.
Möglicherweise müssen backslashes entsprechend psexec-s Dokumentation "\\$args[0]". Stellen Sie sicher, dass der Befehl funktioniert selbst, ohne ein hintergrund-job.

InformationsquelleAutor Sam | 2012-04-17

Schreibe einen Kommentar