VMware Cloud Community
Mr_G_Grant
Enthusiast
Enthusiast
Jump to solution

Can't set network adapter state

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

Tags (1)
0 Kudos
1 Solution

Accepted Solutions
RvdNieuwendijk
Leadership
Leadership
Jump to solution

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

Blog: https://rvdnieuwendijk.com/ | Twitter: @rvdnieuwendijk | Author of: https://www.packtpub.com/virtualization-and-cloud/learning-powercli-second-edition

View solution in original post

0 Kudos
5 Replies
RvdNieuwendijk
Leadership
Leadership
Jump to solution

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

Blog: https://rvdnieuwendijk.com/ | Twitter: @rvdnieuwendijk | Author of: https://www.packtpub.com/virtualization-and-cloud/learning-powercli-second-edition
0 Kudos
Mr_G_Grant
Enthusiast
Enthusiast
Jump to solution

This worked great thanks. Only thing is the virtual machines must be powered on for this to work.

0 Kudos
RvdNieuwendijk
Leadership
Leadership
Jump to solution

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

Blog: https://rvdnieuwendijk.com/ | Twitter: @rvdnieuwendijk | Author of: https://www.packtpub.com/virtualization-and-cloud/learning-powercli-second-edition
0 Kudos
zenmike
Contributor
Contributor
Jump to solution

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?

0 Kudos
LucD
Leadership
Leadership
Jump to solution

See my reply in Re: power-on network adapters script


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

0 Kudos