在PowerCLI脚本中从CSV文件设置VLAN

时间:2016-12-01 14:35:03

标签: powershell csv automation vmware powercli

我正在尝试编译PowerCLI脚本,以帮助从CSV文件的数据中自动创建VM。目前我运行的脚本如下所示:

# Specify vCenter Server, vCenter Server username and vCenter Server user password
 write-host “Please specify vCenter Server and enter credentials” -foreground green
 $vc = read-Host "Connect to which vCenter Server?"
 write-host “Connecting to vCenter Server $vc” -foreground green

 $CSVPath = "$ScriptRoot\PROD_VMRequestTEST.xlsx.csv"    

 Connect-VIServer -Server $vc

 $CSVFile = Import-Csv -Path $CSVPath

 Import-Csv -Path $CSVPath

# Specify vCenter Server Virtual Machine & Templates folder
 $Folder = “Discovered virtual machine”

#
# Specify the vSphere Cluster

$Cluster = 'vSphere 5.5 RND'

$esx = Get-Cluster $Cluster | Get-VMHost -State connected

Import-Csv -Path $CSVPath | %{

  Write-Host “Creation of VM $_.Name initiated”  -ForegroundColor green

  New-VM -Name $_.Name -VMHost ($esx | Get-Random) -Location $Folder

  Write-Host “Power On of the  VM $_.name initiated”  -ForegroundColor green

  Start-VM -VM $_.Name -confirm:$false -RunAsync

}

我在网上遇到过一些处理通过PowerCLI设置VLAN的例子,但它们似乎都没有直接与我使用CSV文件确定VLAN的例子有关。

我尝试使用我的脚本的一个例子是:

$VMhost = Get-vmhost $_.VMHost  
$PortGroup = Get-VirtualPortgroup -name $_.VLAN -VMhost $VMhost

但是,我收到与该行中的-Name参数有关的错误。

1 个答案:

答案 0 :(得分:0)

在脚本上下文中,我认为错误是由于其中一个列值似乎为空(在您的情况下为名称)。我可以看到你在foreach循环中得到了所有的值。我建议你创建一个示例csv,只插入2组数据,看看它是否有效。这种方式至少可以缩小问题的范围。

希望这有助于...... !!!