PowerShell useage with Nutanix
Using PowerShell with Nutanix
PowerShell CMDlets
The below will cover the Nutanix PowerShell CMDlets, how to use them and some general background on Windows PowerShell.
Basics
Windows PowerShell is a powerful shell (hence the name ;P) and scripting language built on the .NET framework. It is a very simple to use language and is built to be intuitive and interactive. Within PowerShell there are a few key constructs/Items:
CMDlets
CMDlets are commands or .NET classes which perform a particular operation. They are usually conformed to the Getter/Setter methodology and typically use a <Verb>-<Noun> based structure. For example: Get-Process, Set-Partition, etc.
Piping or Pipelining
Piping is an important construct in PowerShell (similar to its use in Linux) and can greatly simplify things when used correctly. With piping you’re essentially taking the output of one section of the pipeline and using that as input to the next section of the pipeline. The pipeline can be as long as required (assuming there remains output which is being fed to the next section of the pipe). A very simple example could be getting the current processes, finding those that match a particular trait or filter and then sorting them:
Get-Service | where {$_.Status -eq “Running”} | Sort-Object Name
Piping can also be used in place of for-each, for example:
# For each item in my array
$myArray | %{
# Do something
}
Key Object Types
Below are a few of the key object types in PowerShell. You can easily get the object type by using the .getType() method, for example: $someVariable.getType() will return the objects type.
Variable
$myVariable = “foo”
Note: You can also set a variable to the output of a series or pipeline of commands:
$myVar2 = (Get-Process | where {$_.Status -eq “Running})
In this example the commands inside the parentheses will be evaluated first then variable will be the outcome of that.
Array
$myArray = @(“Value”,”Value”)
Note: You can also have an array of arrays, hash tables or custom objects
Hash Table
$myHash = @{“Key” = “Value”;”Key” = “Value”}
Useful commands
Get the help content for a particular CMDlet (similar to a man page in Linux)
Get-Help <CMDlet Name>
Example: Get-Help Get-Process
List properties and methods of a command or object
<Some expression or object> | Get-Member
Example: $someObject | Get-Member
Core Nutanix CMDlets and Usage
Download Nutanix CMDlets Installer The Nutanix CMDlets can be downloaded directly from the Prism UI (post 4.0.1) and can be found on the drop down in the upper right hand corner:

Load Nutanix Snappin
Check if snappin is loaded and if not, load
if ( (Get-PSSnapin -Name NutanixCmdletsPSSnapin -ErrorAction SilentlyContinue) -eq $null )
{
Add-PsSnapin NutanixCmdletsPSSnapin
}
List Nutanix CMDlets
Get-Command | Where-Object{$_.PSSnapin.Name -eq “NutanixCmdletsPSSnapin”}
Connect to a Acropolis Cluster
Connect-NutanixCluster -Server $server -UserName “myuser” -Password (Read-Host “Password: ” -AsSecureString) -AcceptInvalidSSLCerts
Get Nutanix VMs matching a certain search string
Set to variable
$searchString = “myVM”
$vms = Get-NTNXVM | where {$_.vmName -match $searchString}
Interactive
Get-NTNXVM | where {$_.vmName -match “myString”}
Interactive and formatted
Get-NTNXVM | where {$_.vmName -match “myString”} | ft
Get Nutanix vDisks
Set to variable
$vdisks = Get-NTNXVDisk
Interactive
Get-NTNXVDisk
Interactive and formatted
Get-NTNXVDisk | ft
Get Nutanix Containers
Set to variable
$containers = Get-NTNXContainer
Interactive
Get-NTNXContainer
Interactive and formatted
Get-NTNXContainer | ft
Get Nutanix Protection Domains
Set to variable
$pds = Get-NTNXProtectionDomain
Interactive
Get-NTNXProtectionDomain
Interactive and formatted
Get-NTNXProtectionDomain | ft
Get Nutanix Consistency Groups
Set to variable
$cgs = Get-NTNXProtectionDomainConsistencyGroup
Interactive
Get-NTNXProtectionDomainConsistencyGroup
Interactive and formatted
Get-NTNXProtectionDomainConsistencyGroup | ft
Resources and Scripts:
- Nutanix Github – https://github.com/nutanix/Automation
- Manually Fingerprint vDisks – http://bit.ly/1syOqch
- vDisk Report – http://bit.ly/1r34MIT
- Protection Domain Report – http://bit.ly/1r34MIT
- Ordered PD Restore – http://bit.ly/1pyolrb
NOTE: some scripts above are not maintained and should be used for reference only.
You can find more scripts on the Nutanix Github located at https://github.com/nutanix