Difference between revisions of "PowerCLI Powerhsell"

From Michael's Information Zone
Jump to navigation Jump to search
Line 48: Line 48:
 
$num453=0
 
$num453=0
 
Do{
 
Do{
new-vm -name vm-name-$base -vm clonefromthis -VMHost <destination host to run vm> -WhatIf  
+
$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)