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" >> <出力ファイル名>

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です