Here is what i have to change multiple vm's with one adapter:
$test5 = Import-Csv C:\test5.csv
foreach ($vm in $test5) {
$server= $vm.name
$networkname= $vm.networkname
Write-host "Changing $server to new network $networkname "
Get-VM $server | Get-NetworkAdapter | Set-NetworkAdapter -networkname $networkname -confirm:$false
####Start server
Write-Host "Done, Starting $server"
Start-VM $server -confirm:$false
Write-Host "Complete!"
}
This looks at a spreadsheet with name in one column and networkname in the other and sets the adapter accordingly. It works as long as there is only one network adapter to set...for example if there is a vm with vlan1 for 3 nics on a vm it will set all 3 adapters to vlan 1 but if one network adapter is different than vlan 1 it will fail. How would I set a vm with multiple network adapters? I tried separating with a comma but it doesn't like it. Any ideas?
You can add some additional columns in your CSV file.
Something like this
Name,NetworkName1,NetworkName2,NetworkName3
vm1,net1,net2,net3
vm2,net1,net1,net1
Then you could change the code something like this
$test5 = Import-Csv C:\test5.csv
foreach ($vm in $test5) {
$server = $vm.name
Get-VM $server | Get-NetworkAdapter | %{
if($_.Name -eq "Network adapter 1"){
Set-NetworkAdapter -NetworkAdapter $_ -NetworkName $vm.networkname1 -confirm:$false
}
elseif($_.Name -eq "Network adapter 2"){
Set-NetworkAdapter -NetworkAdapter $_ -NetworkName $vm.networkname2 -confirm:$false
}
elseif($_.Name -eq "Network adapter 3"){
Set-NetworkAdapter -NetworkAdapter $_ -NetworkName $vm.networkname3 -confirm:$false
}
}
Write-host "Changing $server to new network $networkname "
####Start server
Write-Host "Done, Starting $server"
Start-VM $server -confirm:$false
Write-Host "Complete!"
}
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
You can add some additional columns in your CSV file.
Something like this
Name,NetworkName1,NetworkName2,NetworkName3
vm1,net1,net2,net3
vm2,net1,net1,net1
Then you could change the code something like this
$test5 = Import-Csv C:\test5.csv
foreach ($vm in $test5) {
$server = $vm.name
Get-VM $server | Get-NetworkAdapter | %{
if($_.Name -eq "Network adapter 1"){
Set-NetworkAdapter -NetworkAdapter $_ -NetworkName $vm.networkname1 -confirm:$false
}
elseif($_.Name -eq "Network adapter 2"){
Set-NetworkAdapter -NetworkAdapter $_ -NetworkName $vm.networkname2 -confirm:$false
}
elseif($_.Name -eq "Network adapter 3"){
Set-NetworkAdapter -NetworkAdapter $_ -NetworkName $vm.networkname3 -confirm:$false
}
}
Write-host "Changing $server to new network $networkname "
####Start server
Write-Host "Done, Starting $server"
Start-VM $server -confirm:$false
Write-Host "Complete!"
}
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
That worked beautifully! thanks!