Powershell将variables传递给作业

Function start { $BackupList = Import-Csv C:\file.csv -Delimiter ";" ForEach($computer in $BackupList) { $arrayBackup = ($computer.Backup).split(".") $backupdate = Get-Date -Day $arrayBackup[0] -Month $arrayBackup[1] -Year $arrayBackup[2] $datetoday = Get-Date -format d $countingday = (get-date $datetoday).AddMonths(-3) if ($Zahl -eq 1) { if ($backupdate -le $countingday) { $global:client = $computer.computername $global:mac = $computer.MAC $global:Name = $computer.device $global:lastsaved = [int]$computer.lastsavetime if ($computer.computername -match $Client) { { $computer.Backup = $datetoday if ($lastsaved -ne 4) { $lastsaved++ } else { $lastsaved = 1 } if ($lastsaved -eq 1) { $global:savingplace = "\\Savingplace1" } elseif ($lastsaved -eq 2) { $global:savingplace = "\\Savingplace2" } elseif ($lastsaved -eq 3) { $global:savingplace = "\\Savingplace3" } elseif ($lastsaved -eq 4) { $global:savingplace = "\\Savingplace4" } $computer.lastsavetime = $lastsaved } } Start-Job -InitializationScript $functions -ScriptBlock {NASLOGIN} -argumentlist $_ | Receive-Job } } } } 

我从csv文件中读取一些信息。 我想把这些信息传递给一份工作。 在工作中,我使用这个variables来安静地进行大量的函数调用和操作。 但目前没有变数传递给工作。 我怎样才能解决这个问题?

你传递$_到ArgumentList参数,但是我没有看到你的代码在哪里有一个管道活动的地方 – 因此$ _没有被定义。 要将变量传递给作业,请在ArgumentList中指定有效变量,例如:

 $foo = 'foo' $bar = 'bar' Start-Job {param($a, $b) "a is $a, b is $b"} -Arg $foo,$bar | Receive-Job -Wait 

Start-Job -ScriptBlock {NASLOGIN $args[0]$args[1]$args[2]$args[3]$args[4]} -argumentlist $var1,$var2,$var3,$var4,$var5 -InitializationScript $functions } } } $functions = { Function NASLogin { $var1 = $args[0] $var2 = $args[1] $var3 = $args[2] $var4 = $args[3] $var5 = $args[4]这样做,它的工作。 谢谢你的帮助。