Добрый день
Я пытаюсь добавить информацию о пути к диску к оригинальному сценарию ниже, который соответствует жестким дискам виртуальной машины и Windows.
http://www.van -liehout.com/2009/12/match-vm-and-windows-harddisks-using-powercli/
Когда один и тот же код выполняется с использованием Invoke-VMScript, для DiskID и SCSI нет результатовцифры.
$code = @'
$Volumes = Get-WmiObject Win32_Volume | Where-Object {$_.DriveType -eq "3" -and $_.Label -ne "System Reserved"}
ForEach ($Volume in $Volumes)
{
"" | Select-Object -Property @{N="Caption";E={$Volume.Caption}},
@{N="Disk";E={Invoke-Command -ScriptBlock {(Get-Partition | Where-Object {$_.AccessPaths -like $Volume.Caption}).DiskNumber}}},
@{N="SCSI Id";E={Invoke-Command -ScriptBlock {
$Disk = (Get-Partition | Where-Object {$_.AccessPaths -like $Volume.Caption}).DiskNumber
$SCSI = Get-WmiObject -Class Win32_DiskDrive | Where-Object {$_.Index -eq $Disk}
"$($SCSI.SCSIPort):$($SCSI.SCSITargetID)"
} } }
}
'@
Invoke-VMScript -ScriptText $code -vm DBS103 -GuestUser 'user' -GuestPassword 'usrpw' -ScriptType Powershell
ScriptOutput
-----------------------------------------------------------------
| Caption Disk SCSI Id
| ------- ---- -------
| C:\ :
| D:\ :
| E:\ :
| F:\ :
| F:\MSSQL11.MSSQLSERVER\... :
| E:\MSSQL11.MSSQLSERVER\... :
| F:\MSSQL11.MSSQLSERVER\... :
| F:\MSSQL11.MSSQLSERVER\... :
| F:\MSSQL11.MSSQLSERVER\... :
| F:\MSSQL11.MSSQLSERVER\... :
| F:\MSSQL11.MSSQLSERVER\... :
-----------------------------------------------------------------
Когда приведенные ниже коды выполняются на сервере, результаты показывают номера DiskID и SCSI.
$Volumes = Get-WmiObject Win32_Volume | Where-Object {$_.DriveType -eq "3" -and $_.Label -ne "System Reserved"}
ForEach ($Volume in $Volumes)
{
"" | Select-Object -Property @{N="Caption";E={$Volume.Caption}},
@{N="Disk";E={Invoke-Command -ScriptBlock {(Get-Partition | Where-Object {$_.AccessPaths -like $Volume.Caption}).DiskNumber}}},
@{N="SCSI Id";E={Invoke-Command -ScriptBlock {
$Disk = (Get-Partition | Where-Object {$_.AccessPaths -like $Volume.Caption}).DiskNumber
$SCSI = Get-WmiObject -Class Win32_DiskDrive | Where-Object {$_.Index -eq $Disk}
"$($SCSI.SCSIPort):$($SCSI.SCSITargetID)"
} } }
}
Результаты приведены ниже.
------- ---- -------
C:\ 0 2:0
D:\ 1 2:1
E:\ 2 2:2
F:\ 3 2:3
F:\MSSQL11.MSSQLSERVER\MSSQL\DATA01\ 4 2:4
E:\MSSQL11.MSSQLSERVER\MSSQL\LOG01\ 5 2:5
F:\MSSQL11.MSSQLSERVER\MSSQL\DATA02\ 6 2:6
F:\MSSQL11.MSSQLSERVER\MSSQL\BCK\ 7 2:8
F:\MSSQL11.MSSQLSERVER\MSSQL\DATA03\ 8 2:9
F:\MSSQL11.MSSQLSERVER\MSSQL\DATA04\ 9 2:10
F:\MSSQL11.MSSQLSERVER\MSSQL\BCK2\ 10 2:11
Заранее благодарим за руководство.