0
$Computers = Get-QADComputer -sizelimit 5

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 プロパティを取得できるはずです。$computer.name のように 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 に答える