Skip to content

Instantly share code, notes, and snippets.

##########################################################################
# If A CentOS Linux VM Is Returned, #
# Prompt For Credentials With Privileges To Eject The Media In The Guest #
# And Store The Credentials In The $Creds Variable #
# Then For Every VM Returned Eject The Media In The Guest #
# And Disconnect The ISO From The VM #
##########################################################################
If($CentVMs){
$Creds = Get-Credential
Foreach ($VM in $CentVMs){
########################################################
# If A Windows VM Is Returned, #
# For Every VM Returned Disconnect The ISO From The VM #
########################################################
If($WinVMs){
Foreach ($VM in $WinVMs){
Write-Host ""
Write-Host "Disconnecting The ISO From "$VM.Parent.Name"" -ForegroundColor Yellow
Get-CDDrive -VM $VM.Parent.Name | Set-CDDrive -NoMedia -Confirm:$false > $null
Write-Host ""
###########################################
# Get All CentOS Linux VMs Stored In $VMs #
# And Store In The Variable $CentVMs #
###########################################
$CentVMs = $VMs | Where-Object {$_.Parent.Guest.OSFullName -like "*CentOS*"}
######################################
# Get All Windows VMs Stored In $VMs #
# And Store In The Variable $WinVMs #
######################################
$WinVMs = $VMs | Where-Object {$_.Parent.Guest.OSFullName -like "*Windows*"}
###########################################
# Get All VMs With A Configureed ISO Path #
# And Store In The Variable $VMs #
###########################################
$VMs = Get-VM | Get-CDDrive | Where-Object {$_.IsoPath -ne $null} | Select-Object *
###########################################
# Get All VMs With A Configureed ISO Path #
# And Store In The Variable $VMs #
###########################################
$VMs = Get-VM | Get-CDDrive | Where-Object {$_.IsoPath -ne $null} | Select-Object *
######################################
# Get All Windows VMs Stored In $VMs #
# And Store In The Variable $WinVMs #
######################################
Write-Host "Disconnecting The ISO From "$VM.Parent.Name""
Get-CDDrive -VM $VM.Parent.Name | Set-CDDrive -NoMedia -Confirm:$false > $null
Write-Host "Ejecting Media In Guest For "$VM.Parent.Name""
Invoke-VMScript -ScriptText "eject" -ScriptType Bash -VM $VM.Parent.Name -GuestCredential $Creds
(Get-VM | Where-Object {$_.Guest.OSFullName -like "*CentOS*"} | Get-CDDrive | Where-Object {$_.IsoPath -ne $null} | Select-Object *)
$Creds = Get-Credential