用于验证 PowerCLI 脚本中是否存在 VLAN 的 IF 语句
IF Statement to Verify VLAN Exists in PowerCLI Script
我正在编写 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 window 因错误而混乱29=]
感谢您提供的任何帮助
编辑以用于 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
}
我正在编写 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 window 因错误而混乱29=]
感谢您提供的任何帮助
编辑以用于 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
}