Eu estava tentando obter informações sobre o disco de máquinas remotas, incluindo se o SMART está ou não ativado na unidade usando a classe win32_diskdrive.
Isso é mais complicado do que eu pensava. Embora seja fácil ler a propriedade status, descobri algo interessante na propriedade Capabilities, ou seja, o valor que indica se "SMART Notification" está disponível. Este valor não aparecerá a menos que o comando seja executado em um contexto de segurança elevado. Portanto, por exemplo, se eu executar (gwmi win32_diskdrive) .Capabilities the SMART value (10) ainda não aparece na matriz de valores, mas se eu executá-lo em um prompt elevado, ele aparecerá. Até onde eu sei, você não pode executar uma sessão winrm em um contexto elevado (e não estou interessado em hacks bregas ou psexec).
Então, tentei mapear win32_diskdrive para a classe MSStorageDriver_FailurePredictStatus. Eu acho que precisaria fazer isso de qualquer maneira, porque, mesmo que o SMART apareça na propriedade Capabilities, isso não significa necessariamente que está ativado, certo?
Eu estava mapeando a propriedade PNPDeviceID do win32_diskdrive para a propriedade InstanceName do MSStorageDriver_FailurePredictStatus, mas agora o meu problema é que não acho que a propriedade InstanceName seja exclusiva o suficiente para que isso funcione. Por exemplo, aqui está o meu InstanceName:IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_0
Ele mostra o tipo de interface (IDE), o número do modelo (ST3250312AS), a versão do firmware (JC47), o que eu pensei ser um identificador exclusivo de algum tipo ( 5&350bf0c3&0&0.0.0
) e, em seguida, o que parece um número de índice (_0). Quando pesquiso no Google 5&350bf0c3&0&0.0.0
, algumas informações são exibidas na unidade, então não acho que esse número seja único. Isso significa que a exclusividade está no número do índice que não está incluído na propriedade PNPDeviceID da classe win32_diskdrive. Esse é um problema, porque muitos de nossos servidores possuem vários discos idênticos.
Minha preocupação é que MSStorageDriver_FailurePredictStatus
representaria vários 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
E a propriedade PNPDeviceID de win32_diskdrive de todos eles seria apenas
IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0
Como posso mapear com segurança objetos recuperados do win32_diskdrive para MSStorageDriver_FailurePredictStatus
ou fazer isso de outra maneira com o powershell por meio de sessões remotas?
Editar :
Bem, parece que eu estava reagindo demais. Quando verifiquei vários servidores, encontrei 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
Se ninguém puder confirmar isso conclusivamente, em um dia ou mais, assumirei que esse valor é realmente único e marque-o como a "resposta".