I have written a basic script to connect a virtual machines network status to both Connected & Connect at power on. The script appears to run fine without any errors. However when i check a system the network box is still unchecked. Here is the script:
#Script to connect a virtual machines network card
$cred = Get-Credential
Connect-VIServer server.domain.com -Credential $cred
$machines = Get-VM
foreach ($machine in $machines)
{
Set-NetworkAdapter -NetworkAdapter 'Network adapter 1' -Networkname 'Organisation LAN' -StartConnected:$true -Connected:$true
}
Disconnect-VIServer -Confirm:$false
Afaik the NetworkAdapter property needs a NetworkAdapter object instead of a name of a network adapter. So I changed your script to first get the NetworkAdapter object.
#Script to connect a virtual machines network card $cred = Get-Credential Connect-VIServer server.domain.com -Credential $cred Get-VM | Get-NetworkAdapter | ` Where-Object {$_.Name -eq 'Network adapter 1'} | ` Set-NetworkAdapter -Networkname 'Organisation LAN' -StartConnected:$true -Connected:$true -Confirm:$false Disconnect-VIServer -Confirm:$false
Regards, Robert
Afaik the NetworkAdapter property needs a NetworkAdapter object instead of a name of a network adapter. So I changed your script to first get the NetworkAdapter object.
#Script to connect a virtual machines network card $cred = Get-Credential Connect-VIServer server.domain.com -Credential $cred Get-VM | Get-NetworkAdapter | ` Where-Object {$_.Name -eq 'Network adapter 1'} | ` Set-NetworkAdapter -Networkname 'Organisation LAN' -StartConnected:$true -Connected:$true -Confirm:$false Disconnect-VIServer -Confirm:$false
Regards, Robert
This worked great thanks. Only thing is the virtual machines must be powered on for this to work.
You can only set a network adapter to the connected state if the virtual machine is powered on. I changed the script a little to solve this problem:
#Script to connect a virtual machines network card $cred = Get-Credential Connect-VIServer server.domain.com -Credential $cred $VMs = Get-VM $VMs | Where-Object {$_.PowerState -eq "PoweredOn"} | Get-NetworkAdapter | ` Where-Object {$_.Name -eq 'Network adapter 1'} | ` Set-NetworkAdapter -Networkname 'Organisation LAN' -StartConnected:$true -Connected:$true -Confirm:$false $VMs | Where-Object {$_.PowerState -eq "PoweredOff"} | Get-NetworkAdapter | ` Where-Object {$_.Name -eq 'Network adapter 1'} | ` Set-NetworkAdapter -Networkname 'Organisation LAN' -StartConnected:$true -Confirm:$false Disconnect-VIServer -Confirm:$false
Regards, Robert
I edited the script to do the Get-VM only once instead of twice.
Message was edited by: RvdNieuwendijk
I know this thread is old but how would I do this same thing for 300VM with a very specific naming convention of rdclien1-300?
See my reply in Re: power-on network adapters script
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference