Intenté obtener información de disco de máquinas remotas, incluso si SMART está habilitado o no en el disco usando la clase win32_diskdrive.
Esto es más complicado de lo que pensaba. Si bien es bastante fácil leer la propiedad de estado, descubrí algo interesante en la propiedad Capacidades, a saber, el valor que indica si está disponible la "Notificación SMART". Este valor no aparecerá a menos que el comando se ejecute en un contexto de seguridad elevado. Entonces, por ejemplo, si ejecuto (gwmi win32_diskdrive) .Capacidades, el valor INTELIGENTE (10) aún no aparece en la matriz de valores si lo ejecuto en un indicador elevado, sí aparece. Hasta donde sé, no puedes ejecutar una sesión winrm en un contexto elevado (y no estoy interesado en trucos cursis o psexec).
Entonces intenté asignar win32_diskdrive a la clase MSStorageDriver_FailurePredictStatus. Creo que tendría que hacer esto de todos modos porque incluso si SMART aparece en la propiedad Capabilities eso no necesariamente significa que está habilitado, ¿verdad?
Estaba asignando la propiedad PNPDeviceID de win32_diskdrive a la propiedad InstanceName de MSStorageDriver_FailurePredictStatus, pero ahora mi problema es que no creo que la propiedad InstanceName sea lo suficientemente única para que esto funcione. Por ejemplo, aquí está mi InstanceName:IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_0
Muestra el tipo de interfaz (IDE), el número de modelo (ST3250312AS), la versión de firmware (JC47), lo que pensé que era un identificador único de algún tipo ( 5&350bf0c3&0&0.0.0
) y luego lo que parece un número de índice (_0). Cuando busco en Google 5&350bf0c3&0&0.0.0
, aparece cierta información en el disco, así que no creo que este número sea único. Eso significa que la unicidad está en el número de índice que no está incluido en la propiedad PNPDeviceID de la clase win32_diskdrive. Este es un problema porque muchos de nuestros servidores tienen discos múltiples e idénticos.
Mi preocupación es que MSStorageDriver_FailurePredictStatus
representaría múltiples discos como este:
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
Y la propiedad PNPDeviceID de win32_diskdrive de todos ellos sería simplemente
IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0
¿Cómo puedo asignar de manera confiable los objetos recuperados de win32_diskdrive MSStorageDriver_FailurePredictStatus
o hacer esto de otra manera con powershell a través de sesiones remotas?
Editar :
Bueno, parece que estaba exagerando. Cuando revisé un montón de servidores encontré InstanceNames \ PNPDeviceIDs como este:
SCSI\Disk&Ven_TOSHIBA&Prod_MBF2600RC\5&354ecb35&0&000200_0
SCSI\Disk&Ven_TOSHIBA&Prod_MBF2600RC\5&354ecb35&0&000300_0
Si nadie puede confirmar esto de manera concluyente, en un día más o menos, simplemente asumiré que este valor es realmente único y lo marcaré como la "respuesta".
fuente
Device Instance ID
también se conoce como ID específica de la instancia . El administrador PnP asigna un identificador único a cada "devnode" en el árbol de dispositivos. Debido a que un devnode puede tener múltiples dispositivos, los indexa para que sean únicos para el administrador PnP. Es por eso que obtienes un _X agregado alDevice Instance ID
. Editaré mi respuesta original con algunos enlaces que deberían ayudarlo a explorar esto más a fondo, si decide hacerlo.Si se conecta al espacio de nombres WMI remoto utilizando una cuenta de dominio que es miembro del grupo de administradores locales de la computadora remota, el filtrado de tokens UAC no debería tener efecto.
Cuando digo de conexión, es decir especificando la -computer parámetro para Get-WMIObject (lo siento, no es un fan de alias - Soy un gran fan sobre la legibilidad y facilidad de mantenimiento!).
fuente