2

会社で多数の HDD をアーカイブしています。Windows OS インストールからホスト名とユーザー リストを取得する PowerShell スクリプトがあり、ドライブのシリアル番号もプログラムで見つけたいと考えています。これを行う必要がある次の Powershell コード (ほぼ完成) がありますが、複雑な点もあります。

$Disks = Get-WMIObject -class win32_PhysicalMedia
$SerialNumber = foreach($Disk in $Disks) {IF ($Disk.SerialNumber -ne '     WD-WCC2EAV91692') {[do something here]}}

ドライブを USB HDD ドックに接続していますが、(SATA ケーブル経由で、まだ外部でテストしていない) ドライブを内部で接続した状態でコンピューターを起動すると、SerialNumberフィールドに値が入力されているようです。ただし、コンピューターの起動後に接続すると、SerialNumberフィールドは常に空白になります。ドライブを接続するときにコンピュータにこの情報を再スキャンさせる方法はありますか、またはこの情報は、たとえば BIOS などによって起動時にのみ収集されますか?

4

3 に答える 3

1

私の知る限り、これSerialNumberはオプションであり、ドライバーによって提供されます。そのため、USB ドック ドライバーが Windows に情報を提供していない場合、情報を取得する簡単な方法はありません。

于 2016-02-27T00:48:12.553 に答える
0

USBドックにHDDを接続してコンピューターを起動することをテストしたところ、同じ結果が得られました。技術的には、SerialNumber フィールドは空白ではなく、実際のシリアル番号ではなくすべてゼロでした。これはおそらく同じ違いです。スクリプトの一部としてこれを実行する価値があるよりも多くの作業が必要なように思われるので (それが可能であると仮定しても)、スクリプトへの SN バーコードのスキャンを続行する可能性があります。追加の手順ですが、数秒しかかかりません。

ご意見ありがとうございます。

于 2016-02-29T19:00:39.377 に答える
0

このスレッド(「Maxim Shatskih」を探してください) は、IOCTL_SCSI_PASS_THROUGHによってサポートされていると述べてUSBSTORいるため、適切な SCSI コマンドをドライブに渡すことによって (getモードページ 80h)。

必要なことを実行できるパッケージはsg3_utilsWindows 用です (元々は Linux 用に作成されましたが、Windows に移植されました)。

于 2016-02-28T01:20:39.983 に答える