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".
fonte
Device Instance ID
também é conhecido como ID específico da instância . O gerenciador de PnP atribui um identificador exclusivo para cada "devnode" na árvore de dispositivos. Como um devnode pode ter vários dispositivos, ele os indexa para que sejam exclusivos do gerenciador de PnP. É por isso que você recebe um _X anexado aoDevice Instance ID
. Editarei minha resposta original com alguns links que devem ajudá-lo a explorar mais esse assunto, se você optar por fazê-lo.Se você se conectar ao namespace WMI remoto usando uma conta de domínio que seja membro do grupo de administradores locais do computador remoto, a filtragem de token do UAC não entrará em vigor.
Quando digo conectar, quero dizer especificando o parâmetro -computer para Get-WMIObject (desculpe, não sou um fã de aliases - sou um grande fã de legibilidade e manutenção!).
fonte