我有一个报告以下错误的 Windows 2008R2 服务器:
磁盘上的文件系统结构已损坏且无法使用。请在卷\Device\HarddiskVolume2上运行 chkdsk 实用程序。
使用 Powershell 和 WMI 如何在查询时识别这是哪个卷Win32_Volume
。
例如,如果我这样做:
Get-WmiObject Win32_Volume
我得到了服务器上所有卷的列表,但是没有一个Win32_Volume
类属性使用(看起来是)这个“友好”名称 - \Device\HarddiskVolume2
。我可以看到有一个DeviceID
属性返回这样的值:
DeviceID : \\?\Volume{4bc3df2a-65c7-11e0-9c33-806e6f6e6963}\
还有一个Name
属性,但这只是分配给卷的驱动器号。其他任何属性都没有一个与事件日志中报告的内容相近的值。
我知道我可以解析输出fltmc volumes
或DISKPART
获取此信息,但必须有一种方法可以在 PowerShell 脚本中使用 WMI 来获取此信息。
我还查看了Win32_DiskDrive
,Win32_DiskPartition
和Win32_LogicalDisk
类,但没有提到类似的属性值\Device\HarddiskVolume2
。
看看这段代码: http: //poshcode.org/4768它似乎做了你需要的转换来看看你想要什么,你也许可以调整它以满足你的需要,如果你需要帮助,请告诉我但我认为你可以自己弄清楚。
不确定这是否是您正在寻找的那种答案,但从我从命令行中看到的内容来看,这些数据在 Windows 中的列出并不好。我试图从 diskpart 中提取数据以显示信息,但没有列出设备名称。附带说明一下,2012 中似乎添加了更多磁盘命令,例如 get-volume、get-disk 和 get-physicaldisk,但这对 2008 没有帮助。
一些 3rd 方实用程序会做到这一点
这两个实用程序都有命令行选项,因此应该能够将它们与 powershell 脚本一起使用。