You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell磁盘信息脚本中添加PartitionStyle列?

修改PowerShell脚本添加分区样式(PartitionStyle)列

原脚本使用Get-WmiObject win32_logicaldisk只能获取逻辑磁盘的基础信息,而分区样式(MBR/GPT)存储在磁盘驱动器对象中,需要通过关联类将逻辑磁盘与对应的磁盘驱动器关联起来才能获取。以下是修改后的脚本:

$Servernames = "localhost"

# 通过CIM关联查询,获取逻辑磁盘、分区和磁盘驱动器的关联信息
$DiskReport = Get-CimInstance -ClassName Win32_LogicalDisk -ComputerName $Servernames -Filter "DriveType=3" -ErrorAction SilentlyContinue |
    ForEach-Object {
        # 获取当前逻辑磁盘对应的分区关联
        $partition = Get-CimAssociatedInstance -InputObject $_ -ResultClassName Win32_DiskPartition
        if ($partition) {
            # 获取分区对应的磁盘驱动器
            $disk = Get-CimAssociatedInstance -InputObject $partition -ResultClassName Win32_DiskDrive
            # 输出整合后的信息
            [PSCustomObject]@{
                "Server Name"     = $_.SystemName
                "Drive Letter"    = $_.DeviceID
                "PartitionStyle"  = $disk.PartitionStyle
            }
        }
    }

# 输出报表
$DiskReport | Format-Table -AutoSize

脚本说明:

  • 改用Get-CimInstance替代Get-WmiObject:CIM是WMI的现代化版本,性能更好且兼容性更强,适合远程管理场景。
  • 通过Get-CimAssociatedInstance关联对象:
    1. 从逻辑磁盘(Win32_LogicalDisk)关联到对应的磁盘分区(Win32_DiskPartition)
    2. 再从磁盘分区关联到对应的磁盘驱动器(Win32_DiskDrive),从中提取PartitionStyle属性
  • 用[PSCustomObject]整合需要的字段,确保输出结构符合需求

兼容旧版PowerShell的替代方案:

如果你的环境需要兼容PS2.0及以下版本,可以改用WMI关联查询:

$Servernames = "localhost"

$DiskReport = Get-WmiObject win32_logicaldisk -ComputerName $Servernames -Filter "DriveType=3" -ErrorAction SilentlyContinue |
    ForEach-Object {
        $logicalDisk = $_
        # 查询关联的分区
        $partitionQuery = "ASSOCIATORS OF {Win32_LogicalDisk.DeviceID='$($logicalDisk.DeviceID)'} WHERE ResultClass=Win32_DiskPartition"
        $partition = Get-WmiObject -Query $partitionQuery -ComputerName $Servernames -ErrorAction SilentlyContinue
        if ($partition) {
            # 查询关联的磁盘驱动器
            $diskQuery = "ASSOCIATORS OF {Win32_DiskPartition.DeviceID='$($partition.DeviceID)'} WHERE ResultClass=Win32_DiskDrive"
            $disk = Get-WmiObject -Query $diskQuery -ComputerName $Servernames -ErrorAction SilentlyContinue
            # 输出结果
            [PSCustomObject]@{
                "Server Name"     = $logicalDisk.SystemName
                "Drive Letter"    = $logicalDisk.DeviceID
                "PartitionStyle"  = $disk.PartitionStyle
            }
        }
    }

$DiskReport | Format-Table -AutoSize

执行修改后的脚本后,就能得到包含PartitionStyle列的输出,符合你期望的格式。

内容的提问来源于stack exchange,提问作者Arbelac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:15:14