我试图获取远程计算机的磁盘信息,包括是否通过使用win32_diskdrive类在驱动器上启用了SMART。
这比我想的要难。虽然很容易读取status属性,但我在Capabilities属性中发现了一些有趣的东西,即表示“ SMART Notification”是否可用的值。除非在提升的安全性上下文中运行命令,否则不会显示该值。例如,如果我运行(gwmi win32_diskdrive)。功能SMART值(10)不会出现在值数组中,但是如果我在提升的提示符下运行它,它的确会出现。据我所知,您不能在提升的环境中运行winrm会话(并且我对俗气的schtasks hacks或psexec并不感兴趣)。
因此,然后我尝试将win32_diskdrive映射到MSStorageDriver_FailurePredictStatus类。我想我还是必须这样做,因为即使SMART出现在Capabilities属性中,也不一定意味着其已启用吗?
我正在将win32_diskdrive的PNPDeviceID属性映射到MSStorageDriver_FailurePredictStatus的InstanceName属性,但是现在我的问题是我认为InstanceName属性不够独特,无法正常工作。例如,这是我的InstanceName:IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_0
它显示接口类型(IDE),型号(ST3250312AS),固件版本(JC47),我认为这是某种唯一标识符(5&350bf0c3&0&0.0.0
),然后看起来像是索引号(_0)。当我用google搜索时,5&350bf0c3&0&0.0.0
它会显示驱动器上的一些信息,因此我认为这个数字不是唯一的。这意味着唯一性在索引号中,而索引号未包含在win32_diskdrive类的PNPDeviceID属性中。这是一个问题,因为我们的许多服务器都有多个相同的磁盘。
我担心的是,MSStorageDriver_FailurePredictStatus
它将代表多个磁盘,如下所示:
IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_0
IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_1
IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_2
所有这些的win32_diskdrive的PNPDeviceID属性将是
IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0
如何可靠地将从win32_diskdrive检索到的对象映射到Powershell MSStorageDriver_FailurePredictStatus
或通过远程会话以其他方式执行此操作?
编辑:
好吧,看来我反应过度了。当我检查一堆服务器时,我发现InstanceNames \ PNPDeviceIDs像这样:
SCSI\Disk&Ven_TOSHIBA&Prod_MBF2600RC\5&354ecb35&0&000200_0
SCSI\Disk&Ven_TOSHIBA&Prod_MBF2600RC\5&354ecb35&0&000300_0
如果没有人可以在一天左右的时间内最终确认这一点,那么我将假定该值实际上是唯一的,并将其标记为“答案”。