VMware ortamlarında, kayıtlı olmayan sanal makineleri (VM) tespit etmek için PowerCLI kullanarak veri depolarını tarayabilirsiniz. Bu işlemler özellikle veri merkezi yönetiminde düzenin sağlanması açısından önemlidir.
PowerCLI Script Örneği
Removed $ErrorActionPreference = "Stop" since it is not required.
Removed $VMs = Get-VM since it's not required.
Added $VMXS = Get-ChildItem -Path TgtDS: -Recurse -Filter *.vmx | Where-Object {$_.name -notmatch "vCLS-*"} In order to remove all vCLS VMs from the results.
Below is the final script:
Mind giving it a quick sanity check and suggesting any improvements?
$Datastores = get-datastore
$unregistered = @()
ForEach ($datastore in $datastores) {
$psds = Get-Datastore -Name $datastore
New-PSDrive -Name TgtDS -Location $psds -PSProvider VimDatastore -Root '\' | Out-Null
$VMXS = Get-ChildItem -Path TgtDS: -Recurse -Filter *.vmx | Where-Object {$_.name -notmatch "vCLS-*"}
foreach ($VMX in $VMXS) {
try {
Get-VM -datastore $datastore -name $VMX.name.replace('.vmx','') -ErrorAction:Stop | Out-Null
}
catch {
$unregistered += [PSCustomObject] @{
Name = $vmx.Name
DatastoreFullPath = $vmx.DatastoreFullPath
LastWriteTime = $vmx.LastWriteTime
}
}
}
Remove-PSDrive -Name TgtDS
}
$unregistered | export-csv -Path C:\output\UnregisteredVms1.csv -NoTypeInformation
Sonuç
Script, tüm veri depolarını tarayarak kayıtlı olmayan VM’leri tespit eder ve bunları CSV formatında bir rapor dosyasına kaydeder. Raporlama, sistem yöneticilerine ortam düzenini sağlama ve kayıt dışı VM’leri yönetme fırsatı sunar.
Kısaca, bu yöntemle VMware altyapınızı daha verimli bir şekilde yönetebilirsiniz.