2016-12-07 12 views
0

Я пишу сценарий PowerCLI для автоматизации создания виртуальных машин на основе данных в CSV-файле, и я хотел бы знать, как отформатировать оператор IF, чтобы проверить, указаны ли VLAN уже существуют, чтобы избежать загромождения экрана с ошибками.Оператор IF для проверки VLAN существует в PowerCLI Script

раздел сценария, касающегося создания 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

EDIT для работы VLAN, а не VSWITCH

вы можете использовать Get-virtualportgroup для этого и проверить, если имена возвращаемые содержать ваш VLANID. Это не будет работать для распределенных коммутаторов, так как это другой набор командлетов.

$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 
}