オブジェクトに何かを追加する際にループを使用する際に問題があります。スクリプトへのループ
この部分は動作します:
# Get Backup Jobs
$jobs = Get-VBRJob | ?{$_.JobType -eq "Backup"}
foreach ($job in $jobs) {
$jobOptions = New-Object PSObject
$jobOptions | Add-Member -MemberType NoteProperty -Name "JobName" -value $job.name
$jobOptions | Add-Member -MemberType NoteProperty -Name "Enabled" -value $job.isscheduleenabled
出力:
Jobname,Enabled,...
Job1,True,...
私が欲しいものがある:
VMName,Jobname,Enabled
VM1,Job1,True,...
VM2,Job1,True,...
VM3,Job2,True,...
私が試した:
# Get Backup Jobs
$jobs = Get-VBRJob | ?{$_.JobType -eq "Backup"}
foreach ($job in $jobs) {
$vmnames = ($job.GetObjectsInJob()).name
$jobOptions = New-Object PSObject
$jobOptions | Add-Member -MemberType NoteProperty -Name "VMName" -value
$vmnames
$jobOptions | Add-Member -MemberType NoteProperty -Name "JobName" -value
$job.name
$jobOptions | Add-Member -MemberType NoteProperty -Name "Enabled" -value
$job.isscheduleenabled
を10
これは次を作成します:
VMName,Jobname,Enabled
VM1 VM2,Job1,True,...
何を変更する必要がありますか?
各ジョブの出力を同じオブジェクトに追加しますか? この回答の値を使用して実際に期待される結果は何ですか?私の理解では、この出力に基づいて、 '$ vmnames'内に' C1'から 'C6'が単一項目として格納されています。 – gms0ulman
はい$ jobsのすべての出力を$ vmnamesの各単一項目に追加します。私はVM1がJob1にあり、VM2がJob1にあり、すべてのVMに対して新しい行が作成されていることがわかります。 – Stefan
Hmmm、 '$ vmnames'を配列に明示的にキャストしてみてください: ' [array] $ vmnames =($ job.GetObjectsInJob()).name' – gms0ulman