Pages: [1]
Print
Author Topic: Datastore name + Capacity + HarddiskName for each hardisk in a VM.  (Read 1762 times)
R0Ge
Newbie
*
Posts: 7


View Profile
« on: August 28, 2009, 05:21:04 AM »

Hello,

We got Vm's with harddisks on serveral datastores configured.  Sad
In the harddiskfile there is information about the datastore. But how do I get Datastore Name for each harddisk + Capacity + HarddiskName?

Thanks
Robert

note: I solved it. See reply
« Last Edit: August 28, 2009, 04:58:52 PM by R0Ge » Logged
esarakaitis
Administrator
Sr. Member
*****
Posts: 256


8223109 sack57@hotmail.com littleking57 rootinfortwayne
View Profile WWW Email
« Reply #1 on: August 28, 2009, 09:52:36 AM »

try using datastoreurl:

get-vm | % {(get-view $_.id).config.datastoreurl}
Logged
R0Ge
Newbie
*
Posts: 7


View Profile
« Reply #2 on: August 28, 2009, 04:51:04 PM »

Hello,
Solved it the follwing way.
Robert

Code:
$report = @()
Get-VM | sort-object Name | % {
$disk1 = $_ | Get-Harddisk | where { $_.Name -eq "Hard Disk 1" } | Select-Object -property 'Filename', 'Name', 'CapacityKB'
$disk2 = $_ | Get-Harddisk | where { $_.Name -eq "Hard Disk 2" } | Select-Object -property 'Filename', 'Name', 'CapacityKB'
$disk3 = $_ | Get-Harddisk | where { $_.Name -eq "Hard Disk 3" } | Select-Object -property 'Filename', 'Name', 'CapacityKB'

$row = "" | Select VMname, Disk1, CapacityKB1, DataStore1, Disk2, CapacityKB2, DataStore2, Disk3, CapacityKB3, DataStore3
$row.VMname = $_.Name

$row.Disk1 = $disk1.Name
$row.CapacityKB1 = $disk1.CapacityKB
$Filename1 = $disk1.Filename
$Filename1 = [regex]::Split($Filename1,(" " ))
$Filename1 = $Filename1.SyncRoot[0]
$Filename1 = $Filename1.TrimStart("[")
$Filename1 = $Filename1.TrimEnd("]")
$row.DataStore1 = $Filename1

$row.Disk2 = $disk2.Name
$row.CapacityKB2 = $disk2.CapacityKB
$Filename2 = $disk2.Filename
$Filename2 = [regex]::Split($Filename2,(" " ))
$Filename2 = $Filename2.SyncRoot[0]
$Filename2 = $Filename2.TrimStart("[")
$Filename2 = $Filename2.TrimEnd("]")
$row.DataStore2 = $Filename2

    $row.Disk3 = $disk3.Name
$row.CapacityKB3 = $disk3.CapacityKB
$Filename3 = $disk3.Filename
$Filename3 = [regex]::Split($Filename3,(" " ))
$Filename3 = $Filename3.SyncRoot[0]
$Filename3 = $Filename3.TrimStart("[")
$Filename3 = $Filename3.TrimEnd("]")
$row.DataStore3 = $Filename3

$report += $row
}


$report | Export-Csv $outputfile -NoTypeInformation

Logged
Pages: [1]
Print
Jump to: