引数リストにプロパティを使用して変数を渡し、プロパティを失い、プロパティを失います

StackOverflow https://stackoverflow.com//questions/9656175

  •  11-12-2019
  •  | 
  •  

質問

$Computers = Get-QADComputer -sizelimit 5
.

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を呼びますか?

Sune :)

役に立ちましたか?

解決

$ args [0] .NAMEを持つnameプロパティを取得できるはずです。$ comport.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)"
.

他のヒント

まさに、これは私が似たようなものを書く方法です:

#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
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top