powershell 获取 C 驱动器的 shadowstorage maxspace 作为字符串

powershell get shadowstorage maxspace for C drive as string

我如何将 C 驱动器上的 shadowstorage 使用的最大空间作为 GB 中的字符串? 到目前为止我唯一发现的是这个列出所有参数的 cmdlet:

get-wmiobject win32_shadowstorage

但是我只需要将MaxSpace的值换算成GB,并且只针对C盘。 这样做的目的是稍后在 wpf 应用程序中用作 if/else 语句。 Powershell 似乎是实现这一目标的最快方法,"elderly" vssadmin 似乎只接受参数,不检索任何东西...... 提前致谢

运行Get-WmiObject -Class "Win32_ShadowStorage"。您可以对以下内容感兴趣properties:

  • AllocatedSpace数据类型uint64)分配space在差异区域卷上。
  • DiffVolume    (数据类型:Win32_Volume)参考差分卷
  • Volume        (数据类型:Win32_Volume)参考原卷

属性 DiffVolumeVolume 看起来像(GUID 可以不同)

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

本次亮相请您查看Win32_Volume class,还有宾果!还有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 }
}