2017-01-15 35 views
0

我需要創建VEEAM複製作業。創建作業時,我需要提供SourceNetworks和匹配的TargetNetworks的列表。我有一個CSV文件,它具有文本中的匹配列表,然後運行cmdlet來檢索匹配的網絡對象。將對象存儲到對象或陣列中

CSV:

SourcePortGroup, TargetPortGroup 
VLAN 103,LAN0_DMZ 
VLAN 120,LAN0_JDE 
VLAN 121,LAN0_IT-BDC

我寫的,我檢索使用網絡對象一個foreach:

foreach ($item in $csvlist) { 
    Get-VBRServer -Name $SourceESXi | Get-VBRViServerNetworkInfo | Where-Object { 
    $_.NetworkName -eq $Mapping.SourcePortGroup 
    } 
    Get-VBRServer -Name $TargetESXi | Get-VBRViServerNetworkInfo | Where-Object { 
    $_.NetworkName -eq $Mapping.TargetPortGroup 
    } 
} 

這個工程調試時,我得到正確的結果,這是一個對象。但是現在我需要將它們中的每一個都存儲在一個新對象或一個數組中,以便在創建作業後可以輕鬆使用源映射和目標映射。

我不知道最好的方法是存儲結果,然後在需要時調用它們。

+0

'$ VAR = GET-VBRServer ...' –

+0

好,但是這是一個循環。所以我會100次調用get-vbrserver。我需要存儲這些結果。 – Gabrie

回答

0

假設每個Get-VBRServer聲明每次迭代只產生一個單一的項目例如,您可以使用一個哈希表映射源到目標網絡:

$networks = @{} 
foreach ($item in $csvlist) { 
    $key = '{0}/{1}' -f 
    $networks[$key] = @{ 
    'Source' = Get-VBRServer -Name $SourceESXi | 
       Get-VBRViServerNetworkInfo | 
       Where-Object { $_.NetworkName -eq $Mapping.SourcePortGroup } 
    'Target' = Get-VBRServer -Name $TargetESXi | 
       Get-VBRViServerNetworkInfo | 
       Where-Object { $_.NetworkName -eq $Mapping.TargetPortGroup } 
    } 
}