我正在编写一个PowerCLI脚本,根据CSV文件中的数据自动创建VM,我想知道如何格式化IF语句以检查指定的VLAN是否已经存在以避免使屏幕混乱错误。
脚本中以当前格式处理VLAN创建的部分:
New-VM -Name $_.Name -VMHost ($esx | Get-Random) -NumCPU $_.NumCPU -Location $Folder
$list = Get-Cluster $_.Cluster | Get-VMHost
foreach ($esxhost in $list)
{ Get-VirtualSwitch -Name $switch -VMHost $esxhost |
New-VirtualPortgroup -Name "VLAN $($_.VLAN)" -VLANID $($_.VLAN)
}
Write-Host "Wait - propagating VLAN $($_.VLAN) to all hosts" -foreground yellow
Start-Sleep 10
我想确定让脚本执行以下操作的方法:
IF $_.VLAN exists
Write-host "$_.VLAN already present, proceeding to next step"
ELSE DO{ Get-VirtualSwitch -Name $switch -VMHost $esxhost |
New-VirtualPortgroup -Name "VLAN $($_.VLAN)" -VLANID $($_.VLAN)
}
我没有太多写这些经验的经验所以我希望得到一些如何帮助
检查交换机上的vSphere中是否已存在VLAN
如何正确格式化IF / ELSE语句,以避免在运行脚本时出现错误,导致PowerCLI窗口混乱
感谢您提供的任何帮助
答案 0 :(得分:1)
编辑为vlan工作而不是vswitch
您可以使用get-virtualportgroup并检查返回的名称是否包含您的vlanid。这不适用于分布式交换机,因为它是一组不同的cmdlet。
$host = 'YourHost'
$vlanid = 'YourVlanId'
if ((Get-VirtualPortGroup -host $host).VLanId -contains $vlanid )
{
Write-Output 'vlan present'
}
else
{
Write-Output 'vlan missing'
#your code to create vlan here
}