Solved

Change IP addresses and netmask and gateway on multiple VM's

Posted on 2014-02-26
13
1,840 Views
Last Modified: 2014-03-10
Hi Guys,

I have a list of virtual machine's IP addresses they are all VMware managed by a vcenter server.

I need to change the ip addresses, Netmask, Gateway, and the port group for every single one.

What is the quickest way of doing this, is there a powercli command I can use?

Thank you all for the support.
0
Comment
Question by:Kay
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 4
  • 3
13 Comments
 
LVL 13

Assisted Solution

by:Abhilash
Abhilash earned 250 total points
ID: 39888427
You can use the Set-VMGuestNetworkInterface cmdlet to do it.
Check this link the example syntax.
https://www.vmware.com/support/developer/PowerCLI/PowerCLI41U1/html/Set-VMGuestNetworkInterface.html
0
 
LVL 120
ID: 39888450
use this script with PowerCLI

Get-VM VMName | Get-VMGuestNetworkInterface -GuestUser Administrator -GuestPassword <password> -HostUser root -HostPassword <password> | Set-VMGuestNetworkInterface -IPPolicy Static -Ip <IPAddress> -Netmask 255.255.252.0 -Gateway <Gateway> -GuestUser Administrator -GuestPassword <password> -HostUser root -HostPassword <password> 

Open in new window


Make sure VMware Tools is installed in the VM.

VMName is the name of the VM in the inventory.

GuestUser and GuestPassword our Guest Userids and Passwords, so if AD, they are AD usernames and passwords to enable login to the VM.

I think IP Address and Gateway address are self-explanatory.

HostUser and Hostpassword are Host usernames and passwords.
0
 
LVL 13

Expert Comment

by:Abhilash
ID: 39888465
@Andrew
The command you gave is to retrieve the information.
Its a GET command. The author of the question is asking how to set these parameters.
0
Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

 
LVL 120
ID: 39888507
@Abhilash Hb - is it ? did you check all the script?

and then PIPED through a Set-VMGuestNetworkInterface

a working example of code,  see all the code.

Set-VMGuestNetworkInterface

Get-VM VMName | Get-VMGuestNetworkInterface -GuestUser Administrator -GuestPassword <password> -HostUser root -HostPassword <password> | Set-VMGuestNetworkInterface -IPPolicy Static -Ip <IPAddress> -Netmask 255.255.252.0 -Gateway <Gateway> -GuestUser Administrator -GuestPassword <password> -HostUser root -HostPassword <password> 

Open in new window

0
 

Author Comment

by:Kay
ID: 39888644
I am going to connect, using vi-connect, to a vcenter server, so I presume I wont need the -HostUser root -HostPassword <password>

Also do we need the  -GuestUser -GuestPassword <password> twice in the pipelines?

I also need to change the port group, how do I add this to the script?
0
 
LVL 13

Expert Comment

by:Abhilash
ID: 39888674
Yes. You can create a input value and input it when it pops up but in this above case yes you will have to do it twice.
Once for Get and once for Set.
0
 
LVL 120
ID: 39888686
If you are connected to vCenter Server, no host options needed.

username and password requried twice for two functions, the first is get the network adaptor, and the second is set the IP address.

virtual machine portgroup I assume?
0
 

Author Comment

by:Kay
ID: 39889079
yes that's correct, virtual machine port group
0
 
LVL 120

Accepted Solution

by:
Andrew Hancock (VMware vExpert / EE MVE^2) earned 250 total points
ID: 39889619
get-vm | get-networkadapter | where-object { $_.networkname -like "CurrentVirtualMachinePortGroup" } | set-networkadapter -networkname "NewVirtualMachinePortGroup" -Confirm:$false

Open in new window

0
 

Author Comment

by:Kay
ID: 39900097
the code:

Get-VM VMName | Get-VMGuestNetworkInterface -GuestUser Administrator -GuestPassword <password> -HostUser root -HostPassword <password> | Set-VMGuestNetworkInterface -IPPolicy Static -Ip <IPAddress> -Netmask 255.255.252.0 -Gateway <Gateway> -GuestUser Administrator -GuestPassword <password> -HostUser root -HostPassword <password>

Doesn't work, I get this error message below:



Get-VMGuestNetworkInterface : 03/03/2014 11:01:50    Get-VMGuestNetworkInterface        Unable to access file
<unspecified filename>
At line:1 char:25
+ Get-VM DEV-QRE-DEL-10 | Get-VMGuestNetworkInterface -GuestUser uat\kabiru -Guest ...
+                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Get-VMGuestNetworkInterface], CannotAccessFile
    + FullyQualifiedErrorId : Client20_VmGuestServiceImpl_RunScriptInGuest_ViError,VMware.VimAutomation.ViCore.Cmdlets
   .Commands.GetVmGuestNetworkInterface
0
 

Author Comment

by:Kay
ID: 39900115
I am going to use this script instead:

$wmi = Get-WmiObject win32_networkadapterconfiguration -filter "ipenabled = 'true'"

$wmi.EnableStatic("10.0.0.15", "255.255.255.0")

$wmi.SetGateways("10.0.0.1", 1)

$wmi.SetDNSServerSearchOrder("10.0.0.100")

Open in new window


What does the , 1 mean on the $wmi.SetGateways("10.0.0.1", 1)?
0
 

Author Comment

by:Kay
ID: 39900118
this doesn't work either because of the IP addresses!
0
 

Author Comment

by:Kay
ID: 39900818
for the port group that's the way I've done my script, I didn't want to do the foreeach, however I am having to press enter each time, is there a way around it - not pressing enter to process the next command?
Get-VM DEV-QRE-pro-12  | get-networkadapter | set-networkadapter -networkname "VM_Build_2262" -Confirm:$false

Get-VM DEV-QRE-pro-13  | get-networkadapter | set-networkadapter -networkname "VM_Build_2262" -Confirm:$false

Get-VM DEV-QRE-pro-14  | get-networkadapter | set-networkadapter -networkname "VM_Build_2262" -Confirm:$false

Get-VM DEV-QRE-pro-15  | get-networkadapter | set-networkadapter -networkname "VM_Build_2262" -Confirm:$false

Get-VM DEV-QRE-pro-16  | get-networkadapter | set-networkadapter -networkname "VM_Build_2262" -Confirm:$false

Get-VM DEV-QRE-pro-17  | get-networkadapter | set-networkadapter -networkname "VM_Build_2262" -Confirm:$false

Open in new window

0

Featured Post

Simplifying Server Workload Migrations

This use case outlines the migration challenges that organizations face and how the Acronis AnyData Engine supports physical-to-physical (P2P), physical-to-virtual (P2V), virtual to physical (V2P), and cross-virtual (V2V) migration scenarios to address these challenges.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When rebooting a vCenters 6.0 and try to connect using vSphere Client we get this issue "Invalid URL: The hostname could not parsed." When we get this error we need to do some changes in the vCenter advanced settings to fix the issue.
Auditing domain password hashes is a commonly overlooked but critical requirement to ensuring secure passwords practices are followed. Methods exist to extract hashes directly for a live domain however this article describes a process to extract u…
Teach the user how to install and configure the vCenter Orchestrator virtual appliance Open vSphere Web Client: Deploy vCenter Orchestrator virtual appliance OVA file: Verify vCenter Orchestrator virtual appliance boots successfully: Connect to the …
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an antispam), the admini…

731 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question