Windowsクライアントの端末情報を簡単に集める方法
コマンドで windows 端末の情報を集める
windows 端末の情報をコマンドで集めるには、systeminfo コマンドを使う。
systeminfo
このコマンドを使うことで、下記のような情報を取得することができる。
- ホスト名
- OS 名
- OS バージョン
- OS 製造元
- OS 構成
- OS ビルドの種類
- 登録されている所有者
- 登録されている組織
- プロダクト ID
- 最初のインストール日付
- システム起動時間
- システム製造元
- システム モデル
- システムの種類
- プロセッサ
- BIOS バージョン
- D3090-A1x, 2013/06/07
- Windows ディレクトリ
- システム ディレクトリ
- 起動デバイス
- システム ロケール
- 入力ロケール
- タイム ゾーン
- 物理メモリの合計
- 利用できる物理メモリ
- 仮想メモリ: 最大サイズ
- 仮想メモリ: 利用可能
- 仮想メモリ: 使用中
- ページ ファイルの場所
- ドメイン
- ログオン サーバー
- ホットフィックス
- ネットワーク カード
リモートで別端末の情報を取得する。
systeminfo コマンドはリモートで別端末の情報を集めることもできる。
systeminfo /s xxx.xxx.xxx.xxx /u user /p password
リモートで別端末の情報を集めようとしたら、エラーが出た。
先ほど紹介した、systeminfo コマンドを使って、別端末の情報を取得しようとしたら、下記のようなエラーが出るケースがある。
RPC サーバーを利用できません。
遭遇したケースとしては、セキュリティーソフトのファイヤーウォールが入っていて、使用するポートがブロックされていた。
インターネットで調べたところでは、下記のポートを解放してやる必要があるようだ。
・ 135/tcp (RPC エンドポイント マッパー / 全 OS バージョン共通)
・ 1024-5000/tcp,udp (RPC 動的ポート / Windows Server 2003, Windows XP の場合)
・ 49152-65535/tcp,udp (RPC 動的ポート / Windows Server 2008, Windows Vista の場合)
私の場合は、tcp の 49152-65535 ポートを解放することで、systeminfo コマンドをリモートで使用できるようになった。
コマンドで、リモートで別端末のイベントログを取得する
主にサーバーの情報を取得することが多くなるかと思うが、イベントログをリモートで取得して、エラー等が発生してないか確認するときに使える。
wmic /Node:%1 /User:%2 /Password:%3 ntevent where "(logfile='%4' and TimeGenerated>='%START_DATE%000000.0+540' and (EventType='1' or EventType='2'))" list full /format:htable
この例で使用しているパラメータを説明する。
/Node:%1
接続先の IP を指定する。マシン名でも可能。
/User:%2
ユーザ名を指定する。
/Password:%3
指定したユーザのパスワードを指定する。
logfile='%4'
ログのタイプを指定する。イベントログの画面に表示されている、system、application、security などが指定できる対象になる。
TimeGenerated>='%START_DATE%000000.0+540'
取得するログの日付を指定している。この例では、%START_DATE%にセットされた日付の 0 時 0 分 0 秒以降のデータが対象になる。
(EventType='1' or EventType='2'))" list full
ここで指定している EventType の番号には下記の意味がある。
1:エラー
2:警告
4:情報
8:セキュリティの成功の監査
16:セキュリティの失敗の監査
/format:htable
出力されるログの形式を指定している。
ここで指定できる形式は下記のコマンドを実行することで、確認できる。
wmic ntevent list /format /?
htable は html 形式の表で出力されることになる。