我需要创建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 :(得分: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 }
}
}