VMware NSX has an open API and it’s pretty easy to consume. PowerShell is the same way; it’s easy to learn and easy to extend. This week, Anthony Burke and Nick Bradford released a PowerShell extension called PowerNSX. As the name suggests, it’s all about managing VMware NSX.
Nick and Anthony put PowerNSX on Bitbucket, which means there will be a continuos release cycle (whenever someone pushes something to the Git repository). You can download and install PowerNSX using Git or by downloading the branch as a zipfile.
Prerequisites
To run PowerNSX, you need a couple of things pre-installed on your machine. PowerShell v3+, .NET 4.5+, PowerCLI and the PowerNSX Module. The good news is that PowerNSX provides an installer script that you can use to use to install all of those at once. It’s as easy as executing the installer script, on which it will look for the prerequisites and only download and install the packages that are not installed yet. Here’s what it does:
Using PowerNSX
After installing the PowerNSX module, you can start using the NSX commandlets. Firstly include the PowerCLI Snap-in, then load the PowerNSX module and connect to your NSX Manager.
PS D:\Powershell\PowerNSX> Add-PSSnapIn vmware.vimautomation.core PS D:\Powershell\PowerNSX> Import-Module -Name 'C:\Program Files\Common Files\Modules\PowerNSX\PowerNSX.psm1' WARNING: The names of some imported commands from the module 'PowerNSX' include unapproved verbs that might make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of approved verbs, type Get-Verb. PS D:\Powershell\PowerNSX> Connect-NsxServer -Server nsx-manager.lab.local -username admin -password secretpassword PowerNSX requires a PowerCLI connection to the vCenter server NSX is registered against for proper operation. Automatically create PowerCLI connection to vcenter.lab.local? [Y] Yes [N] No [?] Help (default is "N"): Y Enter credentials for vCenter vcenter.lab.local cmdlet Get-Credential at command pipeline position 1 Supply values for the following parameters: Credential Version : 6.2.0 BuildNumber : 2986609 Credential : System.Management.Automation.PSCredential Server : nsx-manager.lab.local Port : 443 Protocol : https ValidateCertificate : False VIConnection : vcenter.lab.local PS D:\Powershell\PowerNSX>
The vCenter configuration is automatically detected from the settings on the NSX Manager and a connection is made to make it easier for PowerNSX to work with vCenter objects such as virtual machines, clusters, dvs, etc.
Examples
When you’re connected to both the NSX Manager and vCenter, you can start doing all kinds of fun stuff. For instance, getting all the NSX Logical Switches in object form:
PS D:\Powershell\PowerNSX> Get-NsxTransportZone | Get-NsxLogicalSwitch objectId : virtualwire-1 objectTypeName : VirtualWire vsmUuid : 423015A2-0DA3-F354-866F-5FF34B0D43BD nodeId : 423015A2-0DA3-F354-866F-5FF34B0D43BD revision : 3 type : type name : Edge-to-LDR description : clientHandle : extendedAttributes : isUniversal : false universalRevision : 0 tenantId : virtual wire tenant vdnScopeId : vdnscope-1 vdsContextWithBacking : vdsContextWithBacking vdnId : 5000 multicastAddr : 239.0.0.0 guestVlanAllowed : false controlPlaneMode : HYBRID_MODE ctrlLsUuid : 9878701a-18de-4b1a-827b-db333277c777 macLearningEnabled : false
Or creating and removing Logical Switches:
PS D:\Powershell\PowerNSX> Get-NsxTransportZone -Name TZ_Testlab | New-NsxLogicalSwitch -Name New_Logical_Switch objectId : virtualwire-31 objectTypeName : VirtualWire vsmUuid : 423015A2-0DA3-F354-866F-5FF34B0D43BD nodeId : 423015A2-0DA3-F354-866F-5FF34B0D43BD revision : 2 type : type name : New_Logical_Switch description : clientHandle : extendedAttributes : isUniversal : false universalRevision : 0 tenantId : vdnScopeId : vdnscope-1 vdsContextWithBacking : vdsContextWithBacking vdnId : 5013 multicastAddr : 239.0.0.13 guestVlanAllowed : false controlPlaneMode : HYBRID_MODE ctrlLsUuid : 50ccca8b-0318-4005-8d0d-a7cd5710311f macLearningEnabled : false PS D:\Powershell\PowerNSX> Get-NsxTransportZone -Name TZ_Testlab | Get-NsxLogicalSwitch New_Logical_Switch | Remove-NsxLogicalSwitch Logical Switch removal is permanent. Proceed with removal of Logical Switch New_Logical_Switch? [Y] Yes [N] No [?] Help (default is "N"): Y PS D:\Powershell\PowerNSX>
Conclusion
If you are working with VMware NSX, then PowerNSX should definitely be in your toolbox. It’ll make your life a lot easier and make configuring NSX faster. Go get it!
Leave a Reply