2016-12-07 25 views
0

我正在写一个PowerCLI脚本来自动创建基于CSV文件中的数据的虚拟机,我想知道如何格式化IF语句来检查指定的VLAN是否已经存在以避免错误地使屏幕混乱。IF声明到验证VLAN存在PowerCLI脚本

对付创建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) 
     } 

我不没有太多的经验写这些,所以我希望在如何帮助

  1. 检查VLAN是否已经存在的vSphere的交换机上

  2. 如何正确格式化if/else语句,以避免弄乱了错误的PowerCLI窗口时运行脚本

谢谢你任何帮助,您可以提供

回答

1

编辑为VLAN,而不是虚拟交换机

你可以使用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 
}