Я пытался получить информацию о диске удаленных машин, в том числе о том, включен ли SMART на диске с помощью класса win32_diskdrive.
Это сложнее, чем я думал. Хотя прочитать свойство status довольно просто, я обнаружил кое-что интересное в свойстве Capabilities, а именно значение, обозначающее, доступно ли «SMART Notification». Это значение не появится, если команда не выполняется в контексте повышенной безопасности. Так, например, если я запускаю (gwmi win32_diskdrive). Возможности, значение SMART (10) еще не появляется в массиве значений, если я запускаю его в приглашении с повышенными правами, оно появляется. Насколько я знаю, вы не можете запустить сеанс winrm в повышенном контексте (и меня не интересуют хитрые взломы schtasks или psexec).
Затем я попытался сопоставить win32_diskdrive с классом MSStorageDriver_FailurePredictStatus. Я думаю, что мне все равно придется это делать, потому что даже если SMART появляется в свойстве Capabilities, это не обязательно означает его включенное право?
Я сопоставлял свойство PNPDeviceID win32_diskdrive со свойством InstanceName объекта MSStorageDriver_FailurePredictStatus, но теперь моя проблема заключается в том, что я не думаю, что свойство InstanceName достаточно уникально, чтобы это работало. Например вот мое имя экземпляра:IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_0
Он показывает тип интерфейса (IDE), номер модели (ST3250312AS), версию прошивки (JC47), который, как я думал, был уникальным идентификатором некоторого вида ( 5&350bf0c3&0&0.0.0
), а затем то, что выглядит как индексный номер (_0). Когда я гуглюсь, 5&350bf0c3&0&0.0.0
появляется какая-то информация на диске, поэтому я не думаю, что это число уникально. Это означает, что уникальность заключается в номере индекса, который не включен в свойство PNPDeviceID класса win32_diskdrive. Это проблема, потому что многие из наших серверов имеют несколько одинаковых дисков.
Меня беспокоит то, что 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
И свойство PNPDeviceID win32_diskdrive для всех них будет просто
IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0
Как я могу надежно отобразить объекты, полученные из win32_diskdrive, MSStorageDriver_FailurePredictStatus
или сделать это по-другому с powershell через удаленные сеансы?
Редактировать :
Ну, похоже, я слишком сильно реагировал. Когда я проверил несколько серверов, я обнаружил InstanceNames \ PNPDeviceIDs вот так:
SCSI\Disk&Ven_TOSHIBA&Prod_MBF2600RC\5&354ecb35&0&000200_0
SCSI\Disk&Ven_TOSHIBA&Prod_MBF2600RC\5&354ecb35&0&000300_0
Если никто не сможет окончательно подтвердить это, через день или около того, я просто предположу, что это значение действительно уникально, и пометить это как «ответ».
источник
Device Instance ID
также называется идентификатором конкретного экземпляра . Менеджер PnP назначает уникальный идентификатор каждому «devnode» в дереве устройств. Поскольку у devnode может быть несколько устройств, он индексирует их так, чтобы они были уникальными для PnP-менеджера. Вот почему вы добавляете _X кDevice Instance ID
. Я отредактирую свой оригинальный ответ с несколькими ссылками, которые должны помочь вам изучить это дальше, если вы решите это сделать.Если вы подключаетесь к удаленному пространству имен WMI, используя учетную запись домена, которая является членом локальной группы администраторов удаленного компьютера, фильтрация маркеров UAC не должна вступать в силу.
Когда я говорю «подключиться», я имею в виду, указав параметр -computer для Get-WMIObject (извините, я не фанат псевдонимов - я большой поклонник читаемости и удобства сопровождения!).
источник