$xaml = @" "@ [void][System.Reflection.Assembly]::LoadWithPartialName('PresentationFramework') #Read XAML $window = [Windows.Markup.XamlReader]::Parse($xaml) $logicalDiskData = Get-CimInstance -Query "Select * from Win32_LogicalDisk" #[System.Collections.ArrayList]$logicalDisksInfo = @() #$logicalDisksInfo = New-Object -TypeName 'System.Collections.ArrayList' $logicalDisksInfo = [System.Collections.ArrayList]::new() foreach ($drive in $logicalDiskData) { $size = $drive.Size / 1gb $freeSpace = $drive.FreeSpace / 1gb $usedSpace = $size - $freeSpace $usedPercent = ($usedSpace / $size) * 100 $logicalDisks = New-Object psobject Add-Member -InputObject $logicalDisks -Name DriveName -MemberType NoteProperty -Value $drive.DeviceID #$logicalDisks | Add-Member -Name DriveName -MemberType NoteProperty -Value $drive.VolumeName $logicalDisks | Add-Member -Name UsedPercentage -MemberType NoteProperty -Value ([System.Math]::Round($usedPercent)) $logicalDisks | Add-Member -Name Size -MemberType NoteProperty -Value ([System.Math]::Round($size)) Add-Member -InputObject $logicalDisks -Name usedSpace -MemberType NoteProperty -Value ([System.Math]::Round($usedSpace)) $logicalDisks | Add-Member -Name FreeSpace -MemberType NoteProperty -Value ([System.Math]::Round($freeSpace)) [void]$logicalDisksInfo.add($logicalDisks) } $myViewModel = New-Object PSObject -Property @{ MyLogicalDiskListProperty = $logicalDisksInfo } $window.DataContext = $myViewModel $window.ShowDialog()