今回はPowerShellでOSの基本情報を取得してみます。サーバー毎のパラメータシートやアプリケーションの設定情報をいちいちGUIで確認しながら、Excelのシートに落とし込み、設定変更するたびに履歴をつけて…なんていうくだらないことから開放されたいのです。そんなこと本来人間が管理すべきではないはずです…が、残念ながら私の知る範囲では当たり前に行われているようです。
昔もなんとか自動化してやろうとちょっと取り組んだことがあるのですが、結局取得する情報によっては難易度が高く、作りこむ時間がとれず中途半端になってしまいました。特に、OSは基本的に気にしなくていい情報、たとえばHDDアレイのHW側での構成情報などの取得が難しいです。メーカーを絞ればなんとかできるのですが、全メーカー対応するのも面倒だし…。でも、そういってるうちに仮想化の波がかなり押し寄せてきたので、OSから取れる情報だけきちんと記録しておくことに意味が以前より出てきた気がしますし、なんといってもサーバー製品がすべてPowerShellから制御できるものが出てきたのでPowerShellでの情報収集が現実的になってきた気がします。
とりあえず、取得した情報をどうやって加工するかは後回しにして、まずは、OSの基本情報の取得からいってみましょう。
どんな情報を取得しようかな
まずはどんな情報が取得できるべきか考えてみます。
- 基本情報
- ホスト名
- OSバージョン
- ディスク構成
- ドメイン参加状況
- ネットワーク設定
- 役割情報
- 機能情報
- 適用済みセキュリティパッチ
- インストール済みアプリケーション
とりあえずこの程度でしょうか。別にPowerShellだから楽ってわけでもないものが多い気がしますが、いいでしょう。さて、うまくいくでしょうか?
ホスト名
ホスト名は一番簡単にやるなら以下のコマンドで取れます。
- hostname
変数に格納するのもそのままでOKです。
- $hostname = hostname
hostnameコマンドはDosコマンドですが、PowerShellではDosコマンドの結果も普通に取得することができるので、便利です。
OSバージョン
OSのバージョンの取得はいろいろやり方があります。WindowsのAPIをたたくっていう手もありますが、せっかくPowerShellなのにこれはちょっとやりたくないです。
environmentクラスを使ってしまうのが簡単でしょうか。environmentクラスは.net frameworkのクラスですが、こうやって.net frameworkに簡単にアクセスできるのもPowerShellの素敵なところです。
1: PS C:\> [Environment]::OSVersion
2:
3: Platform ServicePack Version VersionString
4: -------- ----------- ------- -------------
5: Win32NT 6.1.7600.0 Microsoft Windows NT 6.1.7...
ディスク構成
ディスク構成も取得方法は色々ありますが、ここではWMIオブジェクトを呼び出してみます。こうやってWMIへのアクセスも一発でいけるのが素晴らしいですね。
1: PS C:\> Get-WmiObject -Class Win32_DiskDrive
2:
3:
4: Partitions : 4
5: DeviceID : \\.\PHYSICALDRIVE0
6: Model : Hitachi HDS721010CLA332 ATA Device
7: Size : 1000202764288
8: Caption : Hitachi HDS721010CLA332 ATA Device
9:
10: Partitions : 2
11: DeviceID : \\.\PHYSICALDRIVE1
12: Model : I-O DATA HDCN-U USB Device
13: Size : 640132416000
14: Caption : I-O DATA HDCN-U USB Device
ドメイン参加状況
ドメイン参加状況はWMIのWin32_ComputerSystemオブジェクトで確認できます。
- $domain = (Get-WMIObject Win32_ComputerSystem).PartOfDomain
- if($domain)
- {
- Write-Output "joined to Domain."
- } else {
- Write-Output "not joined to Domain(WORKGROUP)."
- }
ついでに他のプロパティも出力しておきましょうか。
1: PS C:\> Get-WmiObject Win32_ComputerSystem
2:
3:
4:
5: Domain : WORKGROUP
6: Manufacturer : ThirdWave Corporation
7: Model : Prime Series
8: Name : WINDOWS7-PC
9: PrimaryOwnerName : windows7
10: TotalPhysicalMemory : 1878188032
ネットワーク設定
ネットワーク設定に関してはWIMのWin32_NetworkAdapterConfigurationオブジェクトが使えます。
- Get-WmiObject Win32_NetworkAdapterConfiguration
ですが、出力としては使い慣れたipconfig /allを使ってしまうのがよさそうな気がします。
1: ipconfig /all
役割情報、機能情報
役割情報と機能情報は「サーバーマネージャーモジュール」を読み込むことでPowerShellから簡単に扱えるようになります。やっとPowerShellの本領発揮です。
1: PS C:\> Import-Module ServerManager
2: PS C:\> Get-WindowsFeature
3:
4: Display Name Name
5: ------------ ----
6: [ ] Active Directory Rights Management サービス ADRMS
7: [ ] Active Directory Rights Management Server ADRMS-Server
8: [ ] ID フェデレーション サポート ADRMS-Identity
9: [ ] Active Directory ドメイン サービス AD-Domain-Services
10: [ ] Active Directory ドメイン コントローラー ADDS-Domain-Controller
11: [ ] UNIX 用 ID 管理 ADDS-Identity-Mgmt
12: [ ] NIS サーバー ADDS-NIS
13: [ ] パスワード同期 ADDS-Password-Sync
14: [ ] 管理ツール ADDS-IDMU-Tools
15: [ ] Active Directory フェデレーション サービス AD-Federation-Services
16: [ ] フェデレーション サービス ADFS-Federation
17: [ ] フェデレーション サービス プロキシ ADFS-Proxy
18: [ ] AD FS Web エージェント ADFS-Web-Agents
19: [ ] 要求に対応するエージェント ADFS-Claims
20: [ ] Windows トークン ベースのエージェント ADFS-Windows-Token
21: [ ] Active Directory ライトウェイト ディレクトリ サ... ADLDS
22: [ ] Active Directory 証明書サービス AD-Certificate
23: [ ] 証明機関 ADCS-Cert-Authority
24: [ ] 証明機関 Web 登録 ADCS-Web-Enrollment
25: [ ] オンライン レスポンダー ADCS-Online-Cert
26: [ ] ネットワーク デバイス登録サービス ADCS-Device-Enrollment
27: [ ] 証明書の登録 Web サービス ADCS-Enroll-Web-Svc
28: [ ] 証明書の登録ポリシー Web サービス ADCS-Enroll-Web-Pol
29: [ ] DHCP サーバー DHCP
30: [ ] DNS サーバー DNS
31: [ ] FAX サーバー Fax
32: [X] Hyper-V Hyper-V
33: [ ] Web サーバー (IIS) Web-Server
34: [ ] Web サーバー Web-WebServer
35: [ ] HTTP 基本機能 Web-Common-Http
36: [ ] 静的なコンテンツ Web-Static-Content
37: [ ] 既定のドキュメント Web-Default-Doc
38: [ ] ディレクトリの参照 Web-Dir-Browsing
39: [ ] HTTP エラー Web-Http-Errors
40: [ ] HTTP リダイレクション Web-Http-Redirect
41: [ ] WebDAV 発行 Web-DAV-Publishing
42: [ ] アプリケーション開発 Web-App-Dev
43: [ ] ASP.NET Web-Asp-Net
44: [ ] .NET 拡張性 Web-Net-Ext
45: [ ] ASP Web-ASP
46: [ ] CGI Web-CGI
47: [ ] ISAPI 拡張 Web-ISAPI-Ext
48: [ ] ISAPI フィルター Web-ISAPI-Filter
49: [ ] サーバー側インクルード Web-Includes
50: [ ] 状態と診断 Web-Health
51: [ ] HTTP ログ Web-Http-Logging
52: [ ] ログ ツール Web-Log-Libraries
53: [ ] 要求の監視 Web-Request-Monitor
54: [ ] トレース Web-Http-Tracing
55: [ ] カスタム ログ Web-Custom-Logging
56: [ ] ODBC ログ Web-ODBC-Logging
57: [ ] セキュリティ Web-Security
58: [ ] 基本認証 Web-Basic-Auth
59: [ ] Windows 認証 Web-Windows-Auth
60: [ ] ダイジェスト認証 Web-Digest-Auth
61: [ ] クライアント証明書のマッピング認証 Web-Client-Auth
62: [ ] IIS クライアント証明書のマッピング認証 Web-Cert-Auth
63: [ ] URL 承認 Web-Url-Auth
64: [ ] 要求フィルター Web-Filtering
65: [ ] IP およびドメインの制限 Web-IP-Security
66: [ ] パフォーマンス Web-Performance
67: [ ] 静的なコンテンツの圧縮 Web-Stat-Compression
68: [ ] 動的なコンテンツの圧縮 Web-Dyn-Compression
69: [ ] 管理ツール Web-Mgmt-Tools
70: [ ] IIS 管理コンソール Web-Mgmt-Console
71: [ ] IIS 管理スクリプトおよびツール Web-Scripting-Tools
72: [ ] 管理サービス Web-Mgmt-Service
73: [ ] IIS 6 管理互換 Web-Mgmt-Compat
74: [ ] IIS 6 メタベース互換 Web-Metabase
75: [ ] IIS 6 WMI 互換 Web-WMI
76: [ ] IIS 6 スクリプト ツール Web-Lgcy-Scripting
77: [ ] IIS 6 管理コンソール Web-Lgcy-Mgmt-Console
78: [ ] FTP サーバー Web-Ftp-Server
79: [ ] FTP サービス Web-Ftp-Service
80: [ ] FTP 拡張 Web-Ftp-Ext
81: [ ] IIS ホスト可能な Web コア Web-WHC
82: [ ] Windows Server Update Services OOB-WSUS
83: [ ] Windows 展開サービス WDS
84: [ ] 展開サーバー WDS-Deployment
85: [ ] トランスポート サーバー WDS-Transport
86: [ ] アプリケーション サーバー Application-Server
87: [ ] .NET Framework 3.5.1 AS-NET-Framework
88: [ ] Web サーバー (IIS) サポート AS-Web-Support
89: [ ] COM+ ネットワーク アクセス AS-Ent-Services
90: [ ] TCP ポート共有 AS-TCP-Port-Sharing
91: [ ] Windows プロセス アクティブ化サービス サポート AS-WAS-Support
92: [ ] HTTP アクティブ化 AS-HTTP-Activation
93: [ ] メッセージ キューのアクティブ化 AS-MSMQ-Activation
94: [ ] TCP のアクティブ化 AS-TCP-Activation
95: [ ] 名前付きパイプのアクティブ化 AS-Named-Pipes
96: [ ] 分散トランザクション AS-Dist-Transaction
97: [ ] 受信リモート トランザクション AS-Incoming-Trans
98: [ ] 発信リモート トランザクション AS-Outgoing-Trans
99: [ ] WS-Atomic Transactions AS-WS-Atomic
100: [X] ネットワーク ポリシーとアクセス サービス NPAS
101: [X] ネットワーク ポリシー サーバー NPAS-Policy-Server
102: [X] ルーティングとリモート アクセス サービス NPAS-RRAS-Services
103: [X] リモート アクセス サービス NPAS-RRAS
104: [X] ルーティング NPAS-Routing
105: [ ] 正常性登録機関 NPAS-Health
106: [ ] HCAP (Host Credential Authorization Protocol) NPAS-Host-Cred
107: [X] ファイル サービス File-Services
108: [X] ファイル サーバー FS-FileServer
109: [ ] 分散ファイル システム FS-DFS
110: [ ] DFS 名前空間 FS-DFS-Namespace
111: [ ] DFS レプリケーション FS-DFS-Replication
112: [ ] ファイル サーバー リソース マネージャー FS-Resource-Manager
113: [ ] NFS (Network File System) 用サービス FS-NFS-Services
114: [ ] Windows Search サービス FS-Search-Service
115: [ ] Windows Server 2003 ファイル サービス FS-Win2003-Services
116: [ ] インデックス サービス FS-Indexing-Service
117: [ ] ネットワーク ファイル用 BranchCache FS-BranchCache
118: [ ] リモート デスクトップ サービス Remote-Desktop-Services
119: [ ] リモート デスクトップ セッション ホスト RDS-RD-Server
120: [ ] リモート デスクトップ仮想化ホスト RDS-Virtualization
121: [ ] リモート デスクトップ ライセンス RDS-Licensing
122: [ ] リモート デスクトップ接続ブローカー RDS-Connection-Broker
123: [ ] リモート デスクトップ ゲートウェイ RDS-Gateway
124: [ ] リモート デスクトップ Web アクセス RDS-Web-Access
125: [ ] 印刷とドキュメント サービス Print-Services
126: [ ] プリント サーバー Print-Server
127: [ ] LPD サービス Print-LPD-Service
128: [ ] インターネット印刷 Print-Internet
129: [ ] 分散スキャン サーバー Print-Scan-Server
130: [X] .NET Framework 3.5.1 の機能 NET-Framework
131: [X] .NET Framework 3.5.1 NET-Framework-Core
132: [ ] WCF アクティブ化 NET-Win-CFAC
133: [ ] HTTP アクティブ化 NET-HTTP-Activation
134: [ ] 非 HTTP アクティブ化 NET-Non-HTTP-Activ
135: [ ] BitLocker ドライブ暗号化 BitLocker
136: [ ] BranchCache BranchCache
137: [ ] DirectAccess 管理コンソール DAMC
138: [ ] HTTP プロキシを経由した RPC RPC-over-HTTP-Proxy
139: [ ] LPR ポート モニター LPR-Port-Monitor
140: [ ] RDC (Remote Differential Compression) RDC
141: [ ] SAN 用記憶域マネージャー Storage-Mgr-SANS
142: [ ] Simple TCP/IP Services Simple-TCPIP
143: [ ] SMTP サーバー SMTP-Server
144: [ ] SNMP サービス SNMP-Services
145: [ ] SNMP サービス SNMP-Service
146: [ ] WMI SNMP プロバイダー SNMP-WMI-Provider
147: [ ] Telnet クライアント Telnet-Client
148: [ ] Telnet サーバー Telnet-Server
149: [ ] TFTP クライアント TFTP-Client
150: [ ] UNIX ベース アプリケーション用サブシステム Subsystem-UNIX-Apps
151: [ ] Windows Internal Database Windows-Internal-DB
152: [ ] Windows PowerShell Integrated Scripting Environm... PowerShell-ISE
153: [X] Windows Server バックアップの機能 Backup-Features
154: [X] Windows Server バックアップ Backup
155: [ ] コマンドライン ツール Backup-Tools
156: [ ] Windows Server 移行ツール Migration
157: [ ] Windows TIFF IFilter TIFF-IFilter
158: [ ] Windows システム リソース マネージャー WSRM
159: [ ] Windows プロセス アクティブ化サービス WAS
160: [ ] プロセス モデル WAS-Process-Model
161: [ ] .NET 環境 WAS-NET-Environment
162: [ ] 構成 API WAS-Config-APIs
163: [ ] Windows 生体認証フレームワーク Biometric-Framework
164: [ ] WinRM IIS 拡張機能 WinRM-IIS-Ext
165: [ ] WINS サーバー WINS-Server
166: [ ] XPS ビューアー XPS-Viewer
167: [ ] インクと手書きサービス Ink-Handwriting
168: [ ] インク サポート IH-Ink-Support
169: [ ] 手書き認識 IH-Handwriting
170: [ ] インターネット印刷クライアント Internet-Print-Client
171: [ ] インターネット記憶域ネーム サーバー ISNS
172: [ ] グループ ポリシーの管理 GPMC
173: [ ] デスクトップ エクスペリエンス Desktop-Experience
174: [ ] ネットワーク負荷分散 NLB
175: [X] バックグラウンド インテリジェント転送サービス (B... BITS
176: [X] コンパクト サーバー BITS-Compact-Server
177: [ ] IIS サーバー拡張機能 BITS-IIS-Ext
178: [ ] ピア名解決プロトコル PNRP
179: [ ] フェールオーバー クラスタリング Failover-Clustering
180: [ ] マルチパス I/O Multipath-IO
181: [ ] メッセージ キュー MSMQ
182: [ ] メッセージ キュー サービス MSMQ-Services
183: [ ] メッセージ キュー サーバー MSMQ-Server
184: [ ] ディレクトリ サービス統合 MSMQ-Directory
185: [ ] メッセージ キュー トリガー MSMQ-Triggers
186: [ ] HTTP サポート MSMQ-HTTP-Support
187: [ ] マルチキャスト サポート MSMQ-Multicasting
188: [ ] ルーティング サービス MSMQ-Routing
189: [ ] メッセージ キュー DCOM プロキシ MSMQ-DCOM
190: [ ] リモート アシスタンス Remote-Assistance
191: [X] リモート サーバー管理ツール RSAT
192: [X] 役割管理ツール RSAT-Role-Tools
193: [ ] Active Directory 証明書サービス ツール RSAT-ADCS
194: [ ] 証明機関ツール RSAT-ADCS-Mgmt
195: [ ] オンライン レスポンダー ツール RSAT-Online-Responder
196: [X] AD DS および AD LDS ツール RSAT-AD-Tools
197: [ ] AD DS ツール RSAT-ADDS
198: [ ] AD DS スナップインおよびコマンド... RSAT-ADDS-Tools
199: [ ] Active Directory 管理センター RSAT-AD-AdminCenter
200: [ ] NIS サーバー ツール RSAT-SNIS
201: [ ] AD LDS スナップインおよびコマンドラ... RSAT-ADLDS
202: [X] Windows PowerShell の Active Directo... RSAT-AD-PowerShell
203: [ ] Active Directory Rights Management サー... RSAT-RMS
204: [ ] DHCP サーバー ツール RSAT-DHCP
205: [ ] DNS サーバー ツール RSAT-DNS-Server
206: [ ] FAX サーバー ツール RSAT-Fax
207: [ ] ファイル サービス ツール RSAT-File-Services
208: [ ] 分散ファイル システム ツール RSAT-DFS-Mgmt-Con
209: [ ] ファイル サーバー リソース マネージ... RSAT-FSRM-Mgmt
210: [ ] NFS (Network File System) 用サービス... RSAT-NFS-Admin
211: [X] Hyper-V ツール RSAT-Hyper-V
212: [ ] ネットワーク ポリシーとアクセス サービス... RSAT-NPAS
213: [ ] 印刷とドキュメント サービス ツール RSAT-Print-Services
214: [ ] リモート デスクトップ サービス ツール RSAT-RDS
215: [ ] リモート デスクトップ セッション ホ... RSAT-RDS-RemoteApp
216: [ ] リモート デスクトップ ゲートウェイ ... RSAT-RDS-Gateway
217: [ ] リモート デスクトップ ライセンス ツール RSAT-RDS-Licensing
218: [ ] リモート デスクトップ接続ブローカー ... RSAT-RDS-Conn-Broker
219: [ ] Web サーバー (IIS) ツール RSAT-Web-Server
220: [ ] Windows 展開サービス ツール RSAT-WDS
221: [ ] 機能管理ツール RSAT-Feature-Tools
222: [ ] BitLocker ドライブ暗号化管理ユーティリティ RSAT-BitLocker
223: [ ] BitLocker ドライブ暗号化ツール RSAT-Bitlocker-DriveEnc
224: [ ] BitLocker 回復パスワード ビューアー RSAT-Bitlocker-RecPwd
225: [ ] BITS サーバー拡張ツール RSAT-Bits-Server
226: [ ] フェールオーバー クラスタリング ツール RSAT-Clustering
227: [ ] ネットワーク負荷分散ツール RSAT-NLB
228: [ ] SMTP サーバー ツール RSAT-SMTP
229: [ ] WINS サーバー ツール RSAT-WINS
230: [ ] ワイヤレス LAN サービス Wireless-Networking
231: [ ] 高品質な Windows オーディオ ビデオ エクスペリエンス qWave
232: [ ] 接続マネージャー管理キット CMAK
これは素晴らしいですね。これがやりたかったんです、昔から。ぜひマイクロソフトさんにはこの手のものを充実させていただきたい!
適用済みセキュリティパッチ
WMIで取れます。
1: PS C:\> Get-WMIObject Win32_QuickFixEngineering
2:
3: Source Description HotFixID InstalledBy InstalledOn
4: ------ ----------- -------- ----------- -----------
5: WINDOWS7-PC Update KB971033 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
6: WINDOWS7-PC Security Update KB2079403 NT AUTHORITY\SYSTEM 2010/08/14 0:00:00
7: WINDOWS7-PC Hotfix KB2120976 windows7-PC\windows7 2010/11/20 0:00:00
8: WINDOWS7-PC Update KB2158563 NT AUTHORITY\SYSTEM 2010/09/29 0:00:00
9: WINDOWS7-PC Security Update KB2160329 NT AUTHORITY\SYSTEM 2010/08/14 0:00:00
10: WINDOWS7-PC Security Update KB2183461 NT AUTHORITY\SYSTEM 2010/08/14 0:00:00
11: WINDOWS7-PC Security Update KB2207566 NT AUTHORITY\SYSTEM 2010/10/13 0:00:00
12: WINDOWS7-PC Update KB2249857 NT AUTHORITY\SYSTEM 2010/10/28 0:00:00
13: WINDOWS7-PC Update KB2272691 NT AUTHORITY\SYSTEM 2010/08/25 0:00:00
14: WINDOWS7-PC Security Update KB2281679 NT AUTHORITY\SYSTEM 2010/10/13 0:00:00
15: WINDOWS7-PC Update KB2284742 NT AUTHORITY\SYSTEM 2010/10/27 0:00:00
16: WINDOWS7-PC Security Update KB2286198 NT AUTHORITY\SYSTEM 2010/08/03 0:00:00
17: WINDOWS7-PC Security Update KB2296011 NT AUTHORITY\SYSTEM 2010/10/13 0:00:00
18: WINDOWS7-PC Security Update KB2296199 NT AUTHORITY\SYSTEM 2010/12/19 0:00:00
19: WINDOWS7-PC Hotfix KB2300535 windows7-PC\windows7 2010/11/20 0:00:00
20: WINDOWS7-PC Security Update KB2305420 NT AUTHORITY\SYSTEM 2010/12/19 0:00:00
21: WINDOWS7-PC Update KB2345886 NT AUTHORITY\SYSTEM 2010/10/13 0:00:00
22: WINDOWS7-PC Security Update KB2347290 NT AUTHORITY\SYSTEM 2010/09/15 0:00:00
23: WINDOWS7-PC Security Update KB2360131 NT AUTHORITY\SYSTEM 2010/10/13 0:00:00
24: WINDOWS7-PC Update KB2362765 NT AUTHORITY\SYSTEM 2010/09/29 0:00:00
25: WINDOWS7-PC Security Update KB2378111 NT AUTHORITY\SYSTEM 2010/10/13 0:00:00
26: WINDOWS7-PC Security Update KB2385678 NT AUTHORITY\SYSTEM 2010/12/19 0:00:00
27: WINDOWS7-PC Security Update KB2387149 NT AUTHORITY\SYSTEM 2010/10/13 0:00:00
28: WINDOWS7-PC Hotfix KB2387530 NT AUTHORITY\SYSTEM 2011/02/23 0:00:00
29: WINDOWS7-PC Update KB2388210 NT AUTHORITY\SYSTEM 2010/10/27 0:00:00
30: WINDOWS7-PC Security Update KB2393802 NT AUTHORITY\SYSTEM 2011/02/11 0:00:00
31: WINDOWS7-PC Update KB2398632 NT AUTHORITY\SYSTEM 2010/09/15 0:00:00
32: WINDOWS7-PC Security Update KB2416400 NT AUTHORITY\SYSTEM 2010/12/19 0:00:00
33: WINDOWS7-PC Security Update KB2416471 NT AUTHORITY\SYSTEM 2010/10/07 0:00:00
34: WINDOWS7-PC Security Update KB2419640 NT AUTHORITY\SYSTEM 2011/01/14 0:00:00
35: WINDOWS7-PC Security Update KB2423089 NT AUTHORITY\SYSTEM 2010/12/19 0:00:00
36: WINDOWS7-PC Security Update KB2425227 NT AUTHORITY\SYSTEM 2011/02/11 0:00:00
37: WINDOWS7-PC Security Update KB2436673 NT AUTHORITY\SYSTEM 2010/12/19 0:00:00
38: WINDOWS7-PC Security Update KB2442962 NT AUTHORITY\SYSTEM 2010/12/19 0:00:00
39: WINDOWS7-PC Update KB2443685 NT AUTHORITY\SYSTEM 2010/12/19 0:00:00
40: WINDOWS7-PC Security Update KB2446709 NT AUTHORITY\SYSTEM 2011/04/16 0:00:00
41: WINDOWS7-PC Update KB2447568 NT AUTHORITY\SYSTEM 2010/11/24 0:00:00
42: WINDOWS7-PC Update KB2454826 NT AUTHORITY\SYSTEM 2011/02/11 0:00:00
43: WINDOWS7-PC Update KB2467023 NT AUTHORITY\SYSTEM 2011/02/11 0:00:00
44: WINDOWS7-PC Update KB2467659 NT AUTHORITY\SYSTEM 2010/12/19 0:00:00
45: WINDOWS7-PC Security Update KB2475792 NT AUTHORITY\SYSTEM 2011/02/11 0:00:00
46: WINDOWS7-PC Security Update KB2476490 NT AUTHORITY\SYSTEM 2011/06/21 0:00:00
47: WINDOWS7-PC Security Update KB2478661 NT AUTHORITY\SYSTEM 2011/06/21 0:00:00
48: WINDOWS7-PC Security Update KB2479628 NT AUTHORITY\SYSTEM 2011/02/11 0:00:00
49: WINDOWS7-PC Security Update KB2479943 NT AUTHORITY\SYSTEM 2011/03/09 0:00:00
50: WINDOWS7-PC Security Update KB2482017 NT AUTHORITY\SYSTEM 2011/02/11 0:00:00
51: WINDOWS7-PC Security Update KB2483614 NT AUTHORITY\SYSTEM 2011/03/09 0:00:00
52: WINDOWS7-PC Update KB2484033 NT AUTHORITY\SYSTEM 2011/02/23 0:00:00
53: WINDOWS7-PC Security Update KB2485376 NT AUTHORITY\SYSTEM 2011/02/11 0:00:00
54: WINDOWS7-PC Update KB2488113 NT AUTHORITY\SYSTEM 2011/06/21 0:00:00
55: WINDOWS7-PC Security Update KB2489256 NT AUTHORITY\SYSTEM 2011/10/15 0:00:00
56: WINDOWS7-PC Security Update KB2491683 NT AUTHORITY\SYSTEM 2011/04/16 0:00:00
57: WINDOWS7-PC Update KB2492386 NT AUTHORITY\SYSTEM 2011/08/21 0:00:00
58: WINDOWS7-PC Security Update KB2497640 NT AUTHORITY\SYSTEM 2011/04/16 0:00:00
59: WINDOWS7-PC Update KB2502285 NT AUTHORITY\SYSTEM 2011/02/11 0:00:00
60: WINDOWS7-PC Security Update KB2503658 NT AUTHORITY\SYSTEM 2011/04/16 0:00:00
61: WINDOWS7-PC Security Update KB2503665 NT AUTHORITY\SYSTEM 2011/06/21 0:00:00
62: WINDOWS7-PC Update KB2505438 NT AUTHORITY\SYSTEM 2011/03/11 0:00:00
63: WINDOWS7-PC Security Update KB2506212 NT AUTHORITY\SYSTEM 2011/04/16 0:00:00
64: WINDOWS7-PC Security Update KB2506223 NT AUTHORITY\SYSTEM 2011/04/16 0:00:00
65: WINDOWS7-PC Update KB2506928 NT AUTHORITY\SYSTEM 2011/08/21 0:00:00
66: WINDOWS7-PC Security Update KB2507618 NT AUTHORITY\SYSTEM 2011/04/16 0:00:00
67: WINDOWS7-PC Security Update KB2507938 NT AUTHORITY\SYSTEM 2011/07/14 0:00:00
68: WINDOWS7-PC Security Update KB2508272 NT AUTHORITY\SYSTEM 2011/04/16 0:00:00
69: WINDOWS7-PC Security Update KB2508429 NT AUTHORITY\SYSTEM 2011/04/16 0:00:00
70: WINDOWS7-PC Security Update KB2509553 NT AUTHORITY\SYSTEM 2011/04/16 0:00:00
71: WINDOWS7-PC Security Update KB2510531 NT AUTHORITY\SYSTEM 2011/04/16 0:00:00
72: WINDOWS7-PC Update KB2511250 NT AUTHORITY\SYSTEM 2011/05/18 0:00:00
73: WINDOWS7-PC Security Update KB2511455 NT AUTHORITY\SYSTEM 2011/04/16 0:00:00
74: WINDOWS7-PC Update KB2515325 NT AUTHORITY\SYSTEM 2011/05/18 0:00:00
75: WINDOWS7-PC Security Update KB2518867 NT AUTHORITY\SYSTEM 2011/06/21 0:00:00
76: WINDOWS7-PC Update KB2522422 NT AUTHORITY\SYSTEM 2011/05/18 0:00:00
77: WINDOWS7-PC Security Update KB2524375 NT AUTHORITY\SYSTEM 2011/03/28 0:00:00
78: WINDOWS7-PC Update KB2529073 NT AUTHORITY\SYSTEM 2011/07/14 0:00:00
79: WINDOWS7-PC Security Update KB2530548 NT AUTHORITY\SYSTEM 2011/06/21 0:00:00
80: WINDOWS7-PC Security Update KB2532531 NT AUTHORITY\SYSTEM 2011/07/14 0:00:00
81: WINDOWS7-PC Update KB2533552 NT AUTHORITY\SYSTEM 2011/05/22 0:00:00
82: WINDOWS7-PC Update KB2533623 NT AUTHORITY\SYSTEM 2011/07/14 0:00:00
83: WINDOWS7-PC Update KB2534366 NT AUTHORITY\SYSTEM 2011/05/14 0:00:00
84: WINDOWS7-PC Security Update KB2535512 NT AUTHORITY\SYSTEM 2011/06/21 0:00:00
85: WINDOWS7-PC Security Update KB2536275 NT AUTHORITY\SYSTEM 2011/06/21 0:00:00
86: WINDOWS7-PC Security Update KB2536276 NT AUTHORITY\SYSTEM 2011/08/15 0:00:00
87: WINDOWS7-PC Security Update KB2539634 NT AUTHORITY\SYSTEM 2011/08/12 0:00:00
88: WINDOWS7-PC Update KB2541014 NT AUTHORITY\SYSTEM 2011/05/27 0:00:00
89: WINDOWS7-PC Security Update KB2544521 NT AUTHORITY\SYSTEM 2011/06/21 0:00:00
90: WINDOWS7-PC Security Update KB2544893 NT AUTHORITY\SYSTEM 2011/06/21 0:00:00
91: WINDOWS7-PC Update KB2545698 NT AUTHORITY\SYSTEM 2011/07/01 0:00:00
92: WINDOWS7-PC Update KB2547666 NT AUTHORITY\SYSTEM 2011/07/01 0:00:00
93: WINDOWS7-PC Update KB2552343 NT AUTHORITY\SYSTEM 2011/07/01 0:00:00
94: WINDOWS7-PC Security Update KB2555917 NT AUTHORITY\SYSTEM 2011/07/14 0:00:00
95: WINDOWS7-PC Security Update KB2556532 NT AUTHORITY\SYSTEM 2011/08/15 0:00:00
96: WINDOWS7-PC Security Update KB2559049 NT AUTHORITY\SYSTEM 2011/08/15 0:00:00
97: WINDOWS7-PC Security Update KB2560656 NT AUTHORITY\SYSTEM 2011/08/12 0:00:00
98: WINDOWS7-PC Security Update KB2562937 NT AUTHORITY\SYSTEM 2011/08/15 0:00:00
99: WINDOWS7-PC Update KB2563227 NT AUTHORITY\SYSTEM 2011/08/15 0:00:00
100: WINDOWS7-PC Security Update KB2563894 NT AUTHORITY\SYSTEM 2011/08/15 0:00:00
101: WINDOWS7-PC Security Update KB2564958 NT AUTHORITY\SYSTEM 2011/10/15 0:00:00
102: WINDOWS7-PC Security Update KB2567053 NT AUTHORITY\SYSTEM 2011/10/15 0:00:00
103: WINDOWS7-PC Security Update KB2567680 NT AUTHORITY\SYSTEM 2011/08/15 0:00:00
104: WINDOWS7-PC Update KB2570791 NT AUTHORITY\SYSTEM 2011/08/25 0:00:00
105: WINDOWS7-PC Security Update KB2570947 NT AUTHORITY\SYSTEM 2011/09/18 0:00:00
106: WINDOWS7-PC Security Update KB2572076 NT AUTHORITY\SYSTEM 2011/10/15 0:00:00
107: WINDOWS7-PC Security Update KB2579686 NT AUTHORITY\SYSTEM 2011/10/15 0:00:00
108: WINDOWS7-PC Security Update KB2584146 NT AUTHORITY\SYSTEM 2012/01/13 0:00:00
109: WINDOWS7-PC Security Update KB2585542 NT AUTHORITY\SYSTEM 2012/01/14 0:00:00
110: WINDOWS7-PC Security Update KB2586448 NT AUTHORITY\SYSTEM 2011/10/15 0:00:00
111: WINDOWS7-PC Security Update KB2588516 NT AUTHORITY\SYSTEM 2011/11/23 0:00:00
112: WINDOWS7-PC Update KB2598845 NT AUTHORITY\SYSTEM 2011/10/26 0:00:00
113: WINDOWS7-PC Update KB2607712 NT AUTHORITY\SYSTEM 2011/09/06 0:00:00
114: WINDOWS7-PC Update KB2616676 NT AUTHORITY\SYSTEM 2011/09/18 0:00:00
115: WINDOWS7-PC Security Update KB2617657 NT AUTHORITY\SYSTEM 2011/11/23 0:00:00
116: WINDOWS7-PC Security Update KB2618444 NT AUTHORITY\SYSTEM 2012/01/12 0:00:00
117: WINDOWS7-PC Security Update KB2618451 NT AUTHORITY\SYSTEM 2012/01/12 0:00:00
118: WINDOWS7-PC Security Update KB2619339 NT AUTHORITY\SYSTEM 2012/01/12 0:00:00
119: WINDOWS7-PC Security Update KB2620704 NT AUTHORITY\SYSTEM 2011/11/23 0:00:00
120: WINDOWS7-PC Security Update KB2620712 NT AUTHORITY\SYSTEM 2012/01/12 0:00:00
121: WINDOWS7-PC Security Update KB2631813 NT AUTHORITY\SYSTEM 2012/01/13 0:00:00
122: WINDOWS7-PC Update KB2632503 NT AUTHORITY\SYSTEM 2012/01/14 0:00:00
123: WINDOWS7-PC Security Update KB2633171 NT AUTHORITY\SYSTEM 2012/01/12 0:00:00
124: WINDOWS7-PC Update KB2633952 NT AUTHORITY\SYSTEM 2012/01/12 0:00:00
125: WINDOWS7-PC Security Update KB2639417 NT AUTHORITY\SYSTEM 2012/01/12 0:00:00
126: WINDOWS7-PC Update KB2641690 NT AUTHORITY\SYSTEM 2011/11/23 0:00:00
127: WINDOWS7-PC Security Update KB2644615 NT AUTHORITY\SYSTEM 2012/01/14 0:00:00
128: WINDOWS7-PC Security Update KB2656355 NT AUTHORITY\SYSTEM 2012/01/12 0:00:00
129: WINDOWS7-PC Update KB958488 windows7-PC\windows7 2010/06/13 0:00:00
130: WINDOWS7-PC Security Update KB971468 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
131: WINDOWS7-PC Security Update KB972270 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
132: WINDOWS7-PC Update KB974431 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
133: WINDOWS7-PC Security Update KB974571 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
134: WINDOWS7-PC Update KB975053 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
135: WINDOWS7-PC Hotfix KB975467 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
136: WINDOWS7-PC Update KB975496 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
137: WINDOWS7-PC Security Update KB975560 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
138: WINDOWS7-PC Update KB976264 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
139: WINDOWS7-PC Hotfix KB976422 NT AUTHORITY\SYSTEM 2010/06/03 0:00:00
140: WINDOWS7-PC Update KB976662 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
141: WINDOWS7-PC Update KB976902 NT AUTHORITY\SYSTEM 2011/02/06 0:00:00
142: WINDOWS7-PC Update KB977074 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
143: WINDOWS7-PC Security Update KB977165 NT AUTHORITY\SYSTEM 2010/07/13 0:00:00
144: WINDOWS7-PC Update KB977863 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
145: WINDOWS7-PC Security Update KB978262 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
146: WINDOWS7-PC Security Update KB978542 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
147: WINDOWS7-PC Security Update KB978601 NT AUTHORITY\SYSTEM 2010/05/31 0:00:00
148: WINDOWS7-PC Security Update KB978886 NT AUTHORITY\SYSTEM 2010/08/14 0:00:00
149: WINDOWS7-PC Update KB979099 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
150: WINDOWS7-PC Security Update KB979309 NT AUTHORITY\SYSTEM 2010/05/31 0:00:00
151: WINDOWS7-PC Security Update KB979482 NT AUTHORITY\SYSTEM 2010/06/12 0:00:00
152: WINDOWS7-PC Hotfix KB979538 NT AUTHORITY\SYSTEM 2010/09/29 0:00:00
153: WINDOWS7-PC Security Update KB979559 NT AUTHORITY\SYSTEM 2010/06/12 0:00:00
154: WINDOWS7-PC Security Update KB979683 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
155: WINDOWS7-PC Security Update KB979687 NT AUTHORITY\SYSTEM 2010/10/13 0:00:00
156: WINDOWS7-PC Security Update KB979688 NT AUTHORITY\SYSTEM 2010/10/13 0:00:00
157: WINDOWS7-PC Update KB979900 NT AUTHORITY\SYSTEM 2010/06/24 0:00:00
158: WINDOWS7-PC Security Update KB979916 NT AUTHORITY\SYSTEM 2010/06/12 0:00:00
159: WINDOWS7-PC Update KB980182 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
160: WINDOWS7-PC Security Update KB980195 NT AUTHORITY\SYSTEM 2010/06/12 0:00:00
161: WINDOWS7-PC Security Update KB980218 NT AUTHORITY\SYSTEM 2010/06/12 0:00:00
162: WINDOWS7-PC Security Update KB980232 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
163: WINDOWS7-PC Update KB980408 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
164: WINDOWS7-PC Security Update KB980436 NT AUTHORITY\SYSTEM 2010/08/14 0:00:00
165: WINDOWS7-PC Update KB980846 NT AUTHORITY\SYSTEM 2010/06/24 0:00:00
166: WINDOWS7-PC Update KB981078 NT AUTHORITY\SYSTEM 2010/06/24 0:00:00
167: WINDOWS7-PC Security Update KB981332 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
168: WINDOWS7-PC Update KB981793 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
169: WINDOWS7-PC Security Update KB981852 NT AUTHORITY\SYSTEM 2010/08/14 0:00:00
170: WINDOWS7-PC Security Update KB981957 NT AUTHORITY\SYSTEM 2010/10/13 0:00:00
171: WINDOWS7-PC Update KB982018 NT AUTHORITY\SYSTEM 2011/07/14 0:00:00
172: WINDOWS7-PC Update KB982110 NT AUTHORITY\SYSTEM 2010/08/25 0:00:00
173: WINDOWS7-PC Security Update KB982132 NT AUTHORITY\SYSTEM 2010/10/13 0:00:00
174: WINDOWS7-PC Security Update KB982214 NT AUTHORITY\SYSTEM 2010/08/14 0:00:00
175: WINDOWS7-PC Security Update KB982381 NT AUTHORITY\SYSTEM 2010/06/12 0:00:00
176: WINDOWS7-PC Update KB982519 NT AUTHORITY\SYSTEM 2010/06/24 0:00:00
177: WINDOWS7-PC Update KB982632 NT AUTHORITY\SYSTEM 2010/06/02 0:00:00
178: WINDOWS7-PC Update KB982664 NT AUTHORITY\SYSTEM 2010/08/14 0:00:00
179: WINDOWS7-PC Security Update KB982665 NT AUTHORITY\SYSTEM 2010/08/14 0:00:00
180: WINDOWS7-PC Security Update KB982799 NT AUTHORITY\SYSTEM 2010/08/14 0:00:00
181: WINDOWS7-PC Security Update KB983590 NT AUTHORITY\SYSTEM 2010/08/14 0:00:00
インストール済みアプリケーション
これは昔からやり方によって取れたり取れなかったりと色々ありますね。今回はあまり時間をかけたくないので、Google先生に聞いてみました。すると以下の記事が。
ここで紹介されているやり方がひとまずよさそうなので、そのまま拝借します。ありがとうございます。
- $path = "\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
- $path1 = "HKLM:" + $path
- $path2 = "HKCU:" + $path
- Get-ChildItem -Path ($path1,$path2) |
- %{Get-ItemProperty $_.PsPath} |
- ?{$_.systemcomponent -ne 1 -and $_.parentkeyname -eq $null} |
- sort displayname |
- select DisplayName,Publisher
この行数でこれだけのものが取得できるのはさすがPowerShellといった感じですね。
とりあえず一つにまとめてみる
ここまでのものをとりあえず1つにまとめてみます。出力はとりあえずこだわらないので単純にコンソールに吐き出すようにします。開始の目印と項目ごとにヘッダ的なものを出力するfunctionだけ定義しておいてあげましょうか。
- function start_header()
- {
- Write-Output "===================="
- Write-Output "OS information"
- $date = Get-Date
- Write-Output "start time:$date"
- Write-Output "===================="
- }
- function header($title)
- {
- Write-Output ""
- Write-Output "——————–"
- Write-Output $title
- Write-Output "——————–"
- }
- start_header
- header "title"
あとは、いままでのものをすべてくっつけるだけです。こんな感じになりました。
1:
2: function start_header()
3: {
4: Write-Output "===================="
5: Write-Output "OS情報"
6: $date = Get-Date
7: Write-Output "開始時刻:$date"
8: Write-Output "===================="
9: }
10:
11: function header($title)
12: {
13: Write-Output ""
14: Write-Output "--------------------"
15: Write-Output $title
16: Write-Output "--------------------"
17: }
18:
19: start_header
20:
21: #ホスト名
22: header "ホスト名"
23: hostname
24:
25:
26: #OSバージョン
27: header "OSバージョン"
28: [Environment]::OSVersion
29:
30:
31: #ディスク構成
32: header "ディスク構成"
33: Get-WmiObject Win32_DiskDrive
34:
35:
36: #ドメイン参加情報
37: header "ドメイン参加情報"
38: $domain = (Get-WMIObject Win32_ComputerSystem).PartOfDomain
39: if($domain)
40: {
41: Write-Output "joined to Domain."
42: } else {
43: Write-Output "not joined to Domain(WORKGROUP)."
44: }
45: Get-WmiObject Win32_ComputerSystem
46:
47:
48: #ネットワーク設定
49: header "ネットワーク設定"
50: #Get-WmiObject Win32NetworkAdapterConfiguration
51: ipconfig /all
52:
53:
54: #役割情報、機能情報
55: header "役割情報、機能情報"
56: Import-Module ServerManager
57: Get-WindowsFeature
58:
59:
60: #適用済みセキュリティパッチ
61: header "適用済みセキュリティパッチ"
62: Get-WmiObject Win32_QuickFixEngineering
63:
64:
65: #インストール済みアプリケーション
66: header "インストール済みアプリケーション"
67: $path = "\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
68: $path1 = "HKLM:" + $path
69: $path2 = "HKCU:" + $path
70: Get-ChildItem -Path ($path1,$path2) |
71: %{Get-ItemProperty $_.PsPath} |
72: ?{$_.systemcomponent -ne 1 -and $_.parentkeyname -eq $null} |
73: sort displayname |
74: select DisplayName,Publisher
75:
76:
77:
テスト実行
早速Windows Server 2008 R2のサーバーに配置して実行してみました。結果以下のようになってしまいました。
レジストリキーが存在しないという実行時のエラーが出てしまっています。
結果に関しても、OSバージョン以降、コマンドレットの結果が表示されていないようです。
存在しないレジストリキーにアクセスしてエラーになってしまう件はTest-Pathを実行して存在する場合のみ処理するように修正します。とりあえずこれでいいことにしておきましょう。
- #
- header ""
- $path = "\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
- $path1 = "HKLM:" + $path
- $path2 = "HKCU:" + $path
- $testpath = @()
- $testpath += $path1
- if(Test-Path $path2) { $testpath += $path2 }
- Get-ChildItem -Path $testpath |
- %{Get-ItemProperty $_.PsPath} |
- ?{$_.systemcomponent -ne 1 -and $_.parentkeyname -eq $null} |
- sort displayname |
- select DisplayName,Publisher
OSバージョン以降のコマンドレットの結果が表示されていない件は、原因はよくわからないのですが、とりあえず結果をFormat-listに出力することでその後のコマンドレットの結果も表示されるようになりました。バグでしょうか?
- #OS
- header "OS"
- [Environment]::OSVersion | fl
(2012/01/24追記)
上記の結果が出力されなくなった件に関して@mutaguchiさんからtwitterでコメントをいただきました。
.bbpbox{background:url(https://a1.twimg.com/images/themes/theme4/bg.gif) #0099b9;padding:20px;}
@ebi PowerShellの特徴として、オブジェクトを(Format-*等を使わず)そのまま出力すると型に応じて決められた書式でされます。このとき異なった型のオブジェクトを混ぜて出力すると直前に出力した型のフォーマットを引き継いで出力されます。
mutaguchi
.bbpbox{background:url(https://a1.twimg.com/images/themes/theme4/bg.gif) #0099b9;padding:20px;}
@ebi 今回の場合はOSバージョン情報以降に出力したオブジェクトもOperatingSystemオブジェクトと認識されますがそれらに含まれるプロパティは当然存在しないので何も出力されなくなってしまいます。よって…
mutaguchi
.bbpbox{background:url(https://a1.twimg.com/images/themes/theme4/bg.gif) #0099b9;padding:20px;}
@ebi デフォルト出力形式に任せるのではなく、ご提示のコードのようにFormat-*系のコマンドレットで出力するのも一つの方法ですが、出力されるオブジェクトの型を統一させるのでもいいかと。Out-Stringを使ってstringで統一するのが簡単かと思います。
mutaguchi
なるほど、原因と対処法が良くわかりました。@mutaguchiさん、ありがとうございました。今回のスクリプトに関してはformat-listで出力することで十分なので、このまま行こうと思いますが、PowerShellスクリプトの要注意事項ですね。
とりあえずこんな感じで
とりあえずこれで意図した結果は出せるようになりました。以下がソースになります。
大したことはしていないのですが、PowerShellで結構な情報が出力出来るイメージはつかめたと思っています。出力形式等は次回以降いじっていこうと思います。
コメント