使用 PowerShell 获取磁盘空间信息

Marion Paul Kenneth Mendoza 2023年1月30日
  1. 使用 PowerShell 中的 PSDrive 库获取磁盘空间信息
  2. 在 PowerShell 中使用 WMI 对象获取磁盘空间信息
使用 PowerShell 获取磁盘空间信息

PowerShell 可以在我们的 Windows 操作系统系统上生成综合报告。这些报告中的指标之一是我们的系统驱动器列表及其驱动器空间信息。

在本文中,我们将学习一些命令,这些命令将导出我们所有系统驱动器上的信息,并学习如何使用 PowerShell 确定机器中剩余的驱动器空间。

使用 PowerShell 中的 PSDrive 库获取磁盘空间信息

PSDrive 库是一组命令,负责使用 PowerShell 管理、创建和删除临时和持久驱动器。第一种方法将关注查询命令 Get-PSDrive

通过运行 Get-PSDrive 命令,我们可以快速获取安装在我们系统中的所有存储库的信息。

示例代码:

Get-PSDrive

输出:

Name           Used (GB)     Free (GB) Provider      Root                                               CurrentLocation
----           ---------     --------- --------      ----                                               ---------------
Alias                                  Alias
C                 442.84         21.56 FileSystem    C:\                                               Users\KentMarion
Cert                                   Certificate   \
D                3507.38        218.63 FileSystem    D:\
Env                                    Environment
Function                               Function
G                 519.22        412.28 FileSystem    G:\
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE
Variable                               Variable
WSMan                                  WSMan

正如我们从上面的输出中看到的,Get-PSDrive 命令在其对象中有一个 Name 属性。通过了解这些信息,我们可以通过过滤其驱动器名称并选择另一个对象属性来确定其空闲大小来隔离特定驱动器。

运行以下命令进行测试。

示例代码:

Get-PSDrive -Name C | Select-Object Name, Free

输出:

Name        Free
----        ----
C    23061344256

但是,如果我们将最新的输出与之前的输出进行比较,我们可以看到空闲大小已将自身转换为字节。因此,要将值重新转换为千兆字节 (GB),我们必须在选择对象属性时设置自定义表达式。

运行以下命令进行测试。

示例代码:

Get-PSDrive -Name C | Select-Object Name, @{Name = "Free (GB)"; Expression={[Math]::Round($_.Free/1GB,2)}}

输出:

Name        Free (GB)
----        ----
C           21.41

上面的示例代码将列重命名为 Free (GB) 并将浮点值的输出四舍五入到小数点后两位。

在 PowerShell 中使用 WMI 对象获取磁盘空间信息

获取磁盘空间信息的另一种方法是使用 WMI Object 类。这个类的功能类似于 PSDrive,但唯一的区别是这个库可以查询远程计算机。

示例代码:

Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object DeviceID, @{Name = "Free (GB)"; Expression={[Math]::Round($_.FreeSpace/1GB,2)}}

输出:

DeviceID Free (GB)
-------- ---------
C:           21.42

要在远程计算机上启动查询,请在 Get-WMIObject 命令中添加 ComputerName 参数。

Get-WmiObject Win32_LogicalDisk -ComputerName "REMOTE-PC" -Filter "DeviceID='C:'"
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn