0
$Computers = Get-QADComputer -sizelimit 5

返回五台计算机的列表。我循环

foreach($computer in $computers) {
echo "and then I can do this $computer.name"

仅从 $computers 获取计算机名。但是当我尝试像这样将它传递给 start-job 时:

    Start-Job -FilePath $ScriptFile -Name $Computer.Name -ArgumentList $Computer

我无法在 $scriptfile 中创建 $computer.name。我必须像 $computer.name 一样传递它并像 $args[0] 一样调用它。但后来我失去了所有其他属性(我在 $scriptfile 中使用了一堆。)

我没有得到什么?你会怎么称呼 $computer?你会怎么称呼 $computer.name ?

孙:)

4

2 回答 2

5

您应该能够使用 $args[0].Name 获取 Name 属性。如果你想像这样访问name参数:$computer.name,那么你需要在$ScriptFile中定义一个参数:

param(
   $Computer
)

$Computer.name

顺便说一句'你不能这样做:

echo "and then I can do this $computer.name"

PowerShell 仅扩展值 $computer。把它放在一个子表达式中:

echo "and then I can do this $($computer.name)"
于 2012-03-11T15:34:10.130 回答
0

正是如此,这就是我写类似内容的方式:

#Get Services
$Services = Get-Service
#Limit results to the first 5 entries
$Services = $Services[0..4]
#Loop through services
foreach ($Service in $Services)
{
    #For each Service run a basic echo to host to prove that the Service was passed in successfully
    Start-Job -ScriptBlock { param ($Service) Write-Host "Service Name is $($Service.Name)" } -ArgumentList $Service
}

然后,您可以像这样检索作业:

#Retrieve Jobs
Get-Job | Receive-Job
于 2012-03-11T16:09:31.830 回答