$Computers = Get-QADComputer -sizelimit 5
返回五台计算机的列表。我循环
foreach($computer in $computers) {
echo "and then I can do this $computer.name"
只从$计算机中获取计算机名称。 但是,当我试图将它传递给这样的开始工作时:
Start-Job -FilePath $ScriptFile -Name $Computer.Name -ArgumentList $Computer
我无法在$ scriptfile中执行$ computer.name。我必须像$ computer.name一样传递它并将其称为$ args [0]。但后来我放弃了所有其他属性(我在$ scriptfile中使用了一堆。)
我没有到这里来的?你会叫什么电脑?那你叫什么叫$ computer.name?
淑娜:)
答案 0 :(得分: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)"
答案 1 :(得分: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