Problema
Spesso capita che gli utenti a seguito di installazioni e/o aggiornamenti lascino i CD agganciati alle VM, e questo può causare dei problemi. In caso di DRS attivo in modalità "Fully Automated" VMs con CD-ROM attivi non migrano da un host all'altro; stessa condizione quando si ha la necessità di mettere in "Maintenance" un nodo.
Soluzione
Per risolvere il problema, si è deciso di creare due script in powershell. Il primo script "ListVMsWithDrive.ps1" per ottenere la lista delle VMs che ha i CD-ROM connessi producendo come output un file di testo che può essere editato ed utilizzato come input del successivo script "DisconnectDrive.ps1" per la rimozione dei CD-ROM dalle VM contenute nel file.
Di seguito lo script "ListVMsWithCDDrive.ps1" per avere una lista delle VMs con i CD-ROM connessi.
Di seguito lo script "DisconnectDrive.ps1" per disconnettere i CD-ROM
Si è deciso di creare due script proprio per avere la possibilità di decidere su quale VM andare o meno a rimuovere il CD-ROM.
Se non si ha questo tipo di necessità e si vuole disconnettere il CD-ROM sull'intero DataCenter è possibile lanciare il comando di seguito:
.
Spesso capita che gli utenti a seguito di installazioni e/o aggiornamenti lascino i CD agganciati alle VM, e questo può causare dei problemi. In caso di DRS attivo in modalità "Fully Automated" VMs con CD-ROM attivi non migrano da un host all'altro; stessa condizione quando si ha la necessità di mettere in "Maintenance" un nodo.
Soluzione
Per risolvere il problema, si è deciso di creare due script in powershell. Il primo script "ListVMsWithDrive.ps1" per ottenere la lista delle VMs che ha i CD-ROM connessi producendo come output un file di testo che può essere editato ed utilizzato come input del successivo script "DisconnectDrive.ps1" per la rimozione dei CD-ROM dalle VM contenute nel file.
Di seguito lo script "ListVMsWithCDDrive.ps1" per avere una lista delle VMs con i CD-ROM connessi.
########################################################################################
# File : ListVMsWithCDDrive.ps1
# Author: Lorenzo Moglie
# Date : 17.04.2018
# Description : The output of the script is a txt file, containing the list of VMs with
# the CD-Rom configured for that cluster
#######################################################################################
$vCenter = "<VIRTUALCENTER>"
$CLS = "<CLUSTER-NAME>"
$User = "<USERNAME>"
$Password = "<PASSWORD>"
$VMlist = ".\VMlist.txt"
Connect-VIServer -Server $vCenter -User $User -password $Password | Out-Null
#List of VMs with CD-ROM connected for the whole vCenter
#Get-VM | Get-CDDrive | Where {$_.ISOPath -ne $null} | Sort-Object -Unique ParentID | FT -AutoSize Parent, IsoPath
#List of VMs with CD-ROM connected only for the specified Cluster - Output on TXT file
#The file can be used as input od the script DisconnectDrive.ps1
Get-VM -Location $CLS | Get-CDDrive | Where {$_.ISOPath -ne $null} | Sort-Object -Unique ParentID | FT -AutoSize Parent | Out-File $VMlist
#List of VMs with CD-ROM connected - Output on TXT file
#The file can be used as input od the script DisconnectDrive.ps1
#Get-VM | Get-CDDrive | Where {$_.ISOPath -ne $null} | Sort-Object -Unique ParentID | FT -AutoSize Parent | Out-File $VMlist
Disconnect-VIServer * -Confirm:$false
Di seguito lo script "DisconnectDrive.ps1" per disconnettere i CD-ROM
########################################################################################
# File : DisconnectDrive.ps1
# Author: Lorenzo Moglie
# Date : 17.04.2018
# Description : This script disconnect the CD-ROM from the VMs present in the input
# file
#######################################################################################
$vCenter = "<VIRTUALCENTER>"
$CLS = "<CLUSTER-NAME>"
$User = "<USERNAME>"
$Password = "<PASSWORD>"
$VMlist = ".\VMlist.txt"
Connect-VIServer -Server $vCenter -User $User -password $Password | Out-Null
foreach($VM in Get-Content $VMlist) {
if ($VM -ne $null) {
if (($VM.TrimEnd() -contains "Parent") -or ($VM.TrimEnd() -contains "------")){
} else {
Get-VM -Name $VM.TrimEnd() |Get-CDDrive | Where {$_.ISOPath -ne $null} | Set-CDDrive -NoMedia -Confirm:$false
}
}
}
Disconnect-VIServer * -Confirm:$false
Se non si ha questo tipo di necessità e si vuole disconnettere il CD-ROM sull'intero DataCenter è possibile lanciare il comando di seguito:
Get-VM | Get-CDDrive | Where {$_.ISOPath -ne $null} | Set-CDDrive -NoMedia -Confirm:$false
.