Difference between revisions of "PowerCLI Powerhsell"
Jump to navigation
Jump to search
Michael.mast (talk | contribs) |
Michael.mast (talk | contribs) |
||
Line 18: | Line 18: | ||
<pre> | <pre> | ||
remote-vm -vm <namme_of_vm> -deletepermanently -confirm $false | remote-vm -vm <namme_of_vm> -deletepermanently -confirm $false | ||
+ | </pre> | ||
+ | ==Sample Script== | ||
+ | format is <scriptname>.ps1 <number of VMs to make><br> | ||
+ | ie clone_vm.ps1 3 | ||
+ | <pre> | ||
+ | param([string]$num1) | ||
+ | #Athenticate | ||
+ | $cred=get-credential | ||
+ | connect-viserver -server localhost -credential $cred | ||
+ | |||
+ | #Check for enough space | ||
+ | $neededspace=([int]$num1 * '<space needed for each VM>') | ||
+ | $space12=(datastore -Name <datastore name> | Select-Object FreeSpaceGB | ForEach-Object { $_.FreeSpaceGB }) | ||
+ | if ( $space12 -lt $neededspace ){ | ||
+ | echo "Not enought space, $space12 is available and you need $neededspace" | ||
+ | exit | ||
+ | } | ||
+ | #The following assumes you are creating VMs with an incrementing name based on a [a-z]+-[a-z]+-[0-9]+ format. | ||
+ | #Get last VM created for incremental creation | ||
+ | get-folder -name <folder name> | get-vm | select name > C:\powercli\outtest | ||
+ | $vms=(Get-Content C:\powercli\outtest | %{"$($_.Split('-')[2])"}) | ||
+ | $base=0 | ||
+ | foreach($line in $vms){ | ||
+ | if ([int]$line -gt [int]$base){ | ||
+ | $base=$line | ||
+ | } | ||
+ | } | ||
+ | $base = [int]$base + 1 | ||
+ | $num453=0 | ||
+ | Do{ | ||
+ | new-vm -name vm-name-$base -vm clonefromthis -VMHost <destination host to run vm> -WhatIf | ||
+ | $num453=[int]$num453 + [int]1 | ||
+ | }until ([int]$num453 -eq [int]$num1) | ||
</pre> | </pre> |
Revision as of 12:38, 31 May 2017
Installation
Allow powershell to run powercli cmdlets
Set-ExecutionPolicy RemoteSigned Install-Module -Name VMware.PowerCLI
Log into the server and start using commands
$cred=get-credential connect-viserver -server localhost -credential $cred get-vm
Clone VM
new-vm -name <new_machine_name> -vm <source_machine_name> -vmhost <ip or host name of the physical host, not the controller>
Delete VM
remote-vm -vm <namme_of_vm> -deletepermanently -confirm $false
Sample Script
format is <scriptname>.ps1 <number of VMs to make>
ie clone_vm.ps1 3
param([string]$num1) #Athenticate $cred=get-credential connect-viserver -server localhost -credential $cred #Check for enough space $neededspace=([int]$num1 * '<space needed for each VM>') $space12=(datastore -Name <datastore name> | Select-Object FreeSpaceGB | ForEach-Object { $_.FreeSpaceGB }) if ( $space12 -lt $neededspace ){ echo "Not enought space, $space12 is available and you need $neededspace" exit } #The following assumes you are creating VMs with an incrementing name based on a [a-z]+-[a-z]+-[0-9]+ format. #Get last VM created for incremental creation get-folder -name <folder name> | get-vm | select name > C:\powercli\outtest $vms=(Get-Content C:\powercli\outtest | %{"$($_.Split('-')[2])"}) $base=0 foreach($line in $vms){ if ([int]$line -gt [int]$base){ $base=$line } } $base = [int]$base + 1 $num453=0 Do{ new-vm -name vm-name-$base -vm clonefromthis -VMHost <destination host to run vm> -WhatIf $num453=[int]$num453 + [int]1 }until ([int]$num453 -eq [int]$num1)