2016-03-13 124 views
-1

我需要創建一個對象,並且每次迭代都將值添加到。問題是我擁有代碼的邏輯。我想我必須創建另一個foreach並將New-Object psobject -Property $object置於外面......但我不知道該怎麼做。在powershell中創建對象

有人可以幫助我嗎?

Import-Module BEMCLI #BackupExec 

$object= @{} 
#For each last 15 job backups 
ForEach ($i in $(Get-BEJob "FULL" | Get-BEJobHistory -FromStartTime (Get-Date).AddDays("-15") -JobType Backup)) 
{ 

$object.TAPE= ($i | Get-BEJobLog | Get-BEJobLogFiles) # get Tape 
$object.START_TIME=$i.StartTime #get starttime 
$object.END_TIME=$i.EndTime #get endtime 

New-Object psobject -Property $object 
} 

$object | ft 
+0

「我需要創建一個對象,每次迭代添加值」。什麼?所有BEJobs在同一個單一對象中?你在找什麼輸出?通常的解決方案是爲每個BEJob創建一個對象並將它們收集到一個數組(對象列表)中。 –

+0

是的,你是對的。我仍然在與對象和數組進行鬥爭。謝謝。 – user2637202

回答

0

foreach構建你看起來是專門用於發送數據向下管道。不僅是你不試圖捕獲數據,它不會發送任何項目。該簡單事情改變是將foreach循環分配給一個變量

Import-Module BEMCLI #BackupExec 

#For each last 15 job backups 
$objects = ForEach ($i in $(Get-BEJob "FULL" | Get-BEJobHistory -FromStartTime (Get-Date).AddDays("-15") -JobType Backup)) 
{ 
    $object = @{} # Wipe object for next run. 
    $object.TAPE= ($i | Get-BEJobLog | Get-BEJobLogFiles) # get Tape 
    $object.START_TIME=$i.StartTime #get starttime 
    $object.END_TIME=$i.EndTime #get endtime 

    New-Object psobject -Property $object 
} 

$objects | ft 
+0

是的,最後,這就是我所做的。感謝馬特 – user2637202

1

創建另一個數組對象,並添加您$object數據到它在每個迭代上

Import-Module BEMCLI #BackupExec 

$Array = @() 
$object= @{} 
#For each last 15 job backups 
ForEach ($i in $(Get-BEJob "FULL" | Get-BEJobHistory -FromStartTime (Get-Date).AddDays("-15") -JobType Backup)) 
{ 

$object.TAPE= ($i | Get-BEJobLog | Get-BEJobLogFiles) # get Tape 
$object.START_TIME=$i.StartTime #get starttime 
$object.END_TIME=$i.EndTime #get endtime 

$Array += $Object 
} 

$Array | ft 
+0

謝謝Avshalom – user2637202