Difference between revisions of "PowerCLI Powerhsell"
Jump to navigation
Jump to search
Michael.mast (talk | contribs) |
Michael.mast (talk | contribs) |
||
| Line 48: | Line 48: | ||
$num453=0 | $num453=0 | ||
Do{ | Do{ | ||
| − | new-vm -name vm-name-$base -vm clonefromthis -VMHost | + | $usehost=(Get-VMHost | Get-Random) |
| + | new-vm -name vm-name-$base -vm clonefromthis -VMHost $usehost -RunAsync -WhatIf | ||
$num453=[int]$num453 + [int]1 | $num453=[int]$num453 + [int]1 | ||
}until ([int]$num453 -eq [int]$num1) | }until ([int]$num453 -eq [int]$num1) | ||
</pre> | </pre> | ||
Revision as of 13:03, 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{
$usehost=(Get-VMHost | Get-Random)
new-vm -name vm-name-$base -vm clonefromthis -VMHost $usehost -RunAsync -WhatIf
$num453=[int]$num453 + [int]1
}until ([int]$num453 -eq [int]$num1)