如何在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关联对象:- 从逻辑磁盘(Win32_LogicalDisk)关联到对应的磁盘分区(Win32_DiskPartition)
- 再从磁盘分区关联到对应的磁盘驱动器(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
相关产品推荐
相关产品推荐

