1
windows os의 드라이브를 vCenter *.vmdk
과 일치시키고 싶습니다.Powershell Virtual Center의 가상 하드 디스크와 디스크 레이블을 일치 시키십시오.
필요한 정보는 여기 link입니다. PowerShell (디스크의 정보)을 사용하여 "위치 192 (버스 번호 0, 대상 ID 0, LUN 0)"를 얻을 수있는 방법이 없습니다. WMI에서 나는이 정보를 얻지 못했습니다 ...
누군가가 도와 줄 수 있습니까?
수정 된 스크립트 : - 교체 - 1 -
$Vm = "VMName"
if (($VmView = Get-View -ViewType VirtualMachine -Filter @{"Name" = $Vm})) {
$Out = Get-WmiObject -Class win32_diskdrive -Property Index, SCSIPort, SCSITargetId -ComputerName $Vm
#Invoke-VMScript "wmic path win32_diskdrive get Index, SCSIPort, SCSITargetId /format:csv" -vm $VM -scripttype "bat"
foreach ($VirtualSCSIController in ($VMView.Config.Hardware.Device | where {$_.DeviceInfo.Label -match "SCSI-Controller"})) {
foreach ($VirtualDiskDevice in ($VMView.Config.Hardware.Device | where {$_.ControllerKey -eq $VirtualSCSIController.Key})) {
$VirtualDisk = "" | Select SCSIController, DiskName, SCSI_Id, DiskFile, DiskSize, WindowsDisk
$VirtualDisk.SCSIController = $VirtualSCSIController.DeviceInfo.Label
$VirtualDisk.DiskName = $VirtualDiskDevice.DeviceInfo.Label
$VirtualDisk.SCSI_Id = "$($VirtualSCSIController.BusNumber) : $($VirtualDiskDevice.UnitNumber)"
$VirtualDisk.DiskFile = $VirtualDiskDevice.Backing.FileName
$VirtualDisk.DiskSize = $VirtualDiskDevice.CapacityInKB * 1KB/1GB
# Match disks based on SCSI ID
$DiskMatch = $Out | ?{($_.SCSIPort - 2) -eq $VirtualSCSIController.BusNumber -and $_.SCSITargetID -eq $VirtualDiskDevice.UnitNumber}
if ($DiskMatch){
$VirtualDisk.WindowsDisk = "Disk $($DiskMatch.Index)"
}
else {Write-Host "No matching Windows disk found for SCSI id $($VirtualDisk.SCSI_Id)"}
$DiskInfo += $VirtualDisk
}
}
$DiskInfo | Out-GridView
나는 $DiskMatch = $Out | ?{($_.SCSIPort - 2) -eq
< 변경했다 2.
를 넣어에 " - "SCSI 컨트롤러 사이에 의해. 왜 SCSIPort에서 2를 빼야합니까?
흥미로운 독서 : http://www.van-lieshout.com/2009/12/match-vm-and-windows-harddisks-using-powercli/ –
는 URL 주셔서 감사합니다. 나는 이것을 보았다. 그러나 id는 나의 환경에서 일하지 않는다. 스크립트를 수정하여 작동합니다. 그러나 더 나은 해결책이 있다고 생각합니까? – Patrick