PowerShellでシステム情報を取得(8)
さて、変数への代入方法がわかったので、それぞれのシステム情報を適当な変数に代入するコードを書いていきます。
#ハードウェア情報
$vendor =(Get-WmiObject win32_computersystem).Manufacturer #メーカー
$model =(Get-WmiObject win32_computersystem).Model #モデル
$serial =(Get-WmiObject win32_BIOS).SerialNumber #シリアルナンバー
$cpu =(Get-WmiObject win32_processor).Name #CPU
#メモリ
$memory =[Math]::Round((Get-WmiObject Win32_ComputerSystem).TotalPhysicalMemory/(1024*1024*1024), 0, [MidpointRounding]::AwayFromZero)
$HDmodel=(Get-PhysicalDisk).FriendlyName #HDDモデル
$HDsize =(Get-PhysicalDisk).Size #HDD容量
ここまでがハードウェアの情報です。次にソフトウェアの情報を同様に変数に代入していきます。
$os =(Get-WmiObject win32_OperatingSystem).caption #OS
$bit =(Get-WmiObject win32_OperatingSystem).osarchitecture #アーキテクチャ 32bit/64bit
$ver =(Get-WmiObject win32_OperatingSystem).version #バージョン
これで大体の情報は変数に代入できました(ネットワーク情報はまたの機会に)。で、出力ですがコンソールに出力するには「Write-Host」コマンドレットを用います。
Write-Host $vendor,$model
と打つと、CSV出力に必要な","が出力されません。この辺がPowerShellの残念なところですが、そこは
Write-Host "$vendor,$model"
のように変数ごと""で囲ってしまうとうまいこと","も出力されます。また、ファイルに出力するには「Write-Output」でもいいのですが、使い慣れている「echo」とリダイレクト">>"を使います。なお、リダイレクトの">"は上書きで、">>"は追記です。
echo "VENDOR,MODEL,SERIAL,CPU,MEMORY,HDD Model,HDD Size,OS,bit,VERSION" >> <出力ファイル名> #タイトル行
echo "$vendor,$model,$serial,$cpu,$memory,$HDmodel,$HDsize,$os,$bit,$ver" >> <出力ファイル名>