web-dev-qa-db-ja.com

powershell:リモートマシンでS.M.A.R.Tが有効になっているかどうかを確認する方法

Win32_diskdriveクラスを使用して、ドライブでSMARTが有効になっているかどうかなど)を含む、リモートマシンのディスク情報を取得しようとしました。

これは思ったよりトリッキーです。ステータスプロパティを読み取るのは非常に簡単ですが、Capabilitiesプロパティで興味深いもの、つまり「SMART Notification」が利用可能かどうかを示す値を発見しました。この値は、コマンドが上位のセキュリティコンテキストで実行されない限り表示されません。したがって、たとえば(gwmi win32_diskdrive).Capabilitiesを実行すると、SMART value(10)は値の配列にまだ表示されませんが、昇格したプロンプトで実行すると表示されます。昇格したコンテキストでwinrmセッションを実行できないことはわかっています(そして、私は安っぽいschtasksハックやpsexecには興味がありません)。

それで、私はwin32_diskdriveをMSStorageDriver_FailurePredictStatusクラスにマップしようとしました。とにかくこれを行う必要があると思いますSMARTがCapabilitiesプロパティに表示されていても、必ずしも有効になっているという意味ではありませんか?

Win32_diskdriveのPNPDeviceIDプロパティをMSStorageDriver_FailurePredictStatusのInstanceNameプロパティにマッピングしていたのですが、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すると、ドライブにいくつかの情報が表示されるため、この番号は一意ではないと思います。つまり、一意性は、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から取得したオブジェクトを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

だれもこれを最終的に確認できない場合、1日かそこらで、この値は実際には一意であると想定し、これを「回答」としてマークします。

8
red888

「2つに分かれる前の道が3つ目の道を進んだら…」〜Telaxianことわざ

スクリプト

これは、複数のマシンからSMARTデータを取得するために使用したスクリプトです。この例で使用されているデバイスでwinrmをすでに有効にしています。

$aComputers = Get-Content C:\ComputerSMARTDriveTest.txt

 (Get-WmiObject -ComputerName $aComputers -namespace root\wmi –class MSStorageDriver_FailurePredictStatus -ErrorAction Silentlycontinue |  
    more |
    Select PSComputerName,PredictFailure,Reason,InstanceName |
    Format-Table –Autosize) 

次のような出力が得られます。

PSComputerName PredictFailure Reason InstanceName                                                            
-------------- -------------- ------ ------------                                                            
4CZ1*****              False      0 IDE\DiskHitachi_HTS723225A7A364_________________ECBOA60W\4&35e86db3&0...
2UA0*****              False      0 IDE\DiskST3160318AS_____________________________HP35____\5&5df8cfa&0&...

Script Notes:テキストファイルに、1行に1つのホスト名がリストされています。データを区切るカンマはありません。また、スマート対応ドライブを備えていないコンピューターはレポートに表示されません。選択するデータオプションを増やしてレポートをカスタマイズできます。スクリプトで使用したオプションの代わりにSelect *を実行して、完全なダンプを表示できます。

Win32_diskdrive対MSStorageDriver_FailurePredictStatus

win32_diskdriveMSStorageDriver_FailurePredictStatusプロパティの問題について... MSStorageDriver_FailurePredictStatusは、root\wmi名前空間(クラスroot\cimv2が存在するwin32_diskdrveとは別で区別されます)のMSStorageDriverの王朝の中にあり、継承からクラス固有のプロパティではありません。 MSStorageDriverは、データをハードウェアから直接取得します(プロバイダーなし)。 win32_diskdriveには、プロバイダーWin32_DiskDrivePhysicalMediaを使用する独自のPNPDeviceIDプロパティがあります。どちらもハードウェアから同じデータをクエリしますが、個別にクエリします。

上記のInstanceNameを取得するスクリプトは、以下のPNPDeviceIDと同じです。

(Get-WmiObject -ComputerName $aComputers -Namespace root\cimv2 -Class win32_diskdrive `
    -ErrorAction Continue |
    more |
    select PNPDeviceID |
    Format-Table -AutoSize)

結論

(gwmi -Namespace root\wmi -Class MSStorageDriver_FailurePredictStatus).InstanceName

Getと同じデータ:

(gwmi -Class Win32_DiskDrive).PNPDeviceID

コメント参照

このセクションには、この回答のコメントセクションからの追加情報を参照するためのリンクが含まれています。

デバイスツリー

インスタンスID

5
Colyn1337

リモートコンピューターのローカル管理者グループのメンバーであるドメインアカウントを使用してリモートWMI名前空間に接続する場合、UACトークンフィルター すべきではない 有効になります。

私が接続すると言うときは、 -コンピューター パラメータ Get-WMIObject (申し訳ありませんが、エイリアスのファンではありません-私は読みやすさと保守性の大ファンです!).

1
Simon Catlin