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)