Based on the CSV file used to create the VMs, re-use the CSV to control
Part 1 / Part 2
What else can I do now?
- Delete Computer Objects from Active Directory
- Bulk guest shutdown
- Bulk power on virtual machines
- Bulk power off virtual machines
- Bulk Delete Virtual Machines from disk
- Bulk change Computer Object OU
- Delete Computer Objects from Active Directory
# Delete Computer Objects from Active Directory
$vmlist = Import-CSV .\Bulk_VMs_Deploy.csv
foreach ($item in $vmlist) {
$template = $item.template
$datastore = $item.datastore
$vmhost = $item.vmhost
$custspec = $item.custspec
$vmname = $item.vmname
$ipaddr = $item.ipaddress
$subnet = $item.subnet
$gateway = $item.gateway
$pdns = $item.pdns
$resourcepool = $item.resourcepool
Remove-ADComputer -Identity $vmname -Confirm:$false
}
- Bulk guest shutdown
# Guest power down is a gracefull shutdown of the VMs
# VM requires VMware Tools to be installed on the VMs
Connect-VIServer vc6.test.domain
$vmlist = Import-CSV .\Bulk_VMs_Deploy.csv
foreach ($item in $vmlist) {
$template = $item.template
$datastore = $item.datastore
$vmhost = $item.vmhost
$custspec = $item.custspec
$vmname = $item.vmname
$ipaddr = $item.ipaddress
$subnet = $item.subnet
$gateway = $item.gateway
$pdns = $item.pdns
$resourcepool = $item.resourcepool
#Guest Shutdown VM
Shutdown-VMGuest $vmname
}
disconnect-VIServer vc6.test.domain -Confirm:$false
- Bulk power on virtual machines
# Bulk power on virtual machines
Connect-VIServer vc6.test.domain
$vmlist = Import-CSV .\Bulk_VMs_Deploy.csv
foreach ($item in $vmlist) {
$template = $item.template
$datastore = $item.datastore
$vmhost = $item.vmhost
$custspec = $item.custspec
$vmname = $item.vmname
$ipaddr = $item.ipaddress
$subnet = $item.subnet
$gateway = $item.gateway
$pdns = $item.pdns
$resourcepool = $item.resourcepool
# POWER ON vms
Start-VM $vmname
}
disconnect-VIServer vc6.test.domain
- Bulk power off virtual machines
# Bulk Power OFF VMs (Big Button OFF the VMs)
Connect-VIServer vc6.test.domain
$vmlist = Import-CSV .\Bulk_VMs_Deploy.csv
foreach ($item in $vmlist) {
$template = $item.template
$datastore = $item.datastore
$vmhost = $item.vmhost
$custspec = $item.custspec
$vmname = $item.vmname
$ipaddr = $item.ipaddress
$subnet = $item.subnet
$gateway = $item.gateway
$pdns = $item.pdns
$resourcepool = $item.resourcepool
#PowerOFF VM (Big Button OFF the VM)
Stop-VM $vmname -Confirm:$false
}
Disconnect-VIServer vc6.test.domain -Confirm:$false
- Bulk Delete Virtual Machines from disk
# Delete Virtual Machines from disk
# VM should be already powered off
Connect-VIServer vc6.test.domain
$vmlist = Import-CSV .\Bulk_VMs_Deploy.csv
foreach ($item in $vmlist) {
$template = $item.template
$datastore = $item.datastore
$vmhost = $item.vmhost
$custspec = $item.custspec
$vmname = $item.vmname
$ipaddr = $item.ipaddress
$subnet = $item.subnet
$gateway = $item.gateway
$pdns = $item.pdns
$resourcepool = $item.resourcepool
Remove-VM -VM $vmname -DeleteFromDisk -Confirm:$false
}
disconnect-VIServer vc6.test.domain -Confirm:$false
- Bulk change Computer Object OU#Move and AD Computer Object to a specific OU from a CSV file
$vmlist = Import-CSV .\Bulk_VMs_Deploy.csvforeach ($item in $vmlist) {$template = $item.template
$datastore = $item.datastore
$vmhost = $item.vmhost
$custspec = $item.custspec
$vmname = $item.vmname
$ipaddr = $item.ipaddress
$subnet = $item.subnet
$gateway = $item.gateway
$pdns = $item.pdns
$resourcepool = $item.resourcepoolGet-ADComputer $vmname|Move-ADObject -TargetPath “OU=VM,DC=TEST,DC=DOMAIN”
}
Disclaimer Please take the code and evolve it into a different project? Credit / Tag me on your project Twitter #StephenHackers
Any use of this code is at your own risk. Remember bulk automation jobs require the right resources to be available.
Part 1 / Part 2