PowerShell получить Shadowstorage Maxspace для диска C в виде строки - PullRequest
0 голосов
/ 27 января 2019

Как мне получить максимальное пространство, используемое shadowstorage на диске C, в виде строки в ГБ?Единственное, что я нашел на данный момент, - это командлет, в котором перечислены все параметры:

get-wmiobject win32_shadowstorage

Но мне нужно только значение MaxSpace, преобразованное в ГБ и только для диска C.Целью этого является использование в приложении wpf в дальнейшем как оператора if / else.Похоже, Powershell - это самый быстрый способ достичь этого, а «пожилой» vssadmin, похоже, принимает параметры, а не извлекает что-либо ... Заранее спасибо

1 Ответ

0 голосов
/ 27 января 2019

Пробег Get-WmiObject -Class "Win32_ShadowStorage".Вас могут заинтересовать следующие свойства :

  • AllocatedSpace ( Тип данных : uint64) Выделенное пространство на томе дифференциальной области.
  • DiffVolume ( Тип данных : Win32_Volume) Ссылка на дифференциальный объем.
  • Volume ( Тип данных : Win32_Volume) Ссылка на исходный том.

Свойства DiffVolume и Volume выглядят как ( GUID может варьироваться)

Win32_Volume.DeviceID="\\\\?\\Volume{95570d86-0703-4b5c-8909-c967baecabd3}\\"

, и это появление приглашаетвам нужно проверить Win32_Volume класс и Бинго !Есть свойство DriveLetter!Собираем это вместе:

Get-WmiObject -Class "Win32_ShadowStorage" | 
ForEach-Object { 
    $aux = $_.Maxspace/1GB
    Get-WmiObject -Class "Win32_Volume" -Filter (
            $_.DiffVolume -replace 'Win32_Volume\.', '') | 
        Select-Object -Property DriveLetter, DeviceID | 
            Where-Object DriveLetter -eq 'C:' | 
                ForEach-Object { [string]$aux }
}
...