PowerShellでOSの基本情報を取得する

今回はPowerShellでOSの基本情報を取得してみます。サーバー毎のパラメータシートやアプリケーションの設定情報をいちいちGUIで確認しながら、Excelのシートに落とし込み、設定変更するたびに履歴をつけて…なんていうくだらないことから開放されたいのです。そんなこと本来人間が管理すべきではないはずです…が、残念ながら私の知る範囲では当たり前に行われているようです。

昔もなんとか自動化してやろうとちょっと取り組んだことがあるのですが、結局取得する情報によっては難易度が高く、作りこむ時間がとれず中途半端になってしまいました。特に、OSは基本的に気にしなくていい情報、たとえばHDDアレイのHW側での構成情報などの取得が難しいです。メーカーを絞ればなんとかできるのですが、全メーカー対応するのも面倒だし…。でも、そういってるうちに仮想化の波がかなり押し寄せてきたので、OSから取れる情報だけきちんと記録しておくことに意味が以前より出てきた気がしますし、なんといってもサーバー製品がすべてPowerShellから制御できるものが出てきたのでPowerShellでの情報収集が現実的になってきた気がします。

とりあえず、取得した情報をどうやって加工するかは後回しにして、まずは、OSの基本情報の取得からいってみましょう。

どんな情報を取得しようかな

まずはどんな情報が取得できるべきか考えてみます。

  • 基本情報
    • ホスト名
    • OSバージョン
    • ディスク構成
    • ドメイン参加状況
    • ネットワーク設定
    • 役割情報
    • 機能情報
    • 適用済みセキュリティパッチ
    • インストール済みアプリケーション

とりあえずこの程度でしょうか。別にPowerShellだから楽ってわけでもないものが多い気がしますが、いいでしょう。さて、うまくいくでしょうか?

ホスト名

ホスト名は一番簡単にやるなら以下のコマンドで取れます。

  1. hostname

変数に格納するのもそのままでOKです。

  1. $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オブジェクトで確認できます。

  1. $domain = (Get-WMIObject Win32_ComputerSystem).PartOfDomain
  2. if($domain)
  3. {
  4.     Write-Output "joined to Domain."
  5. } else {
  6.     Write-Output "not joined to Domain(WORKGROUP)."
  7. }

ついでに他のプロパティも出力しておきましょうか。

   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オブジェクトが使えます。

  1. 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先生に聞いてみました。すると以下の記事が。

ここで紹介されているやり方がひとまずよさそうなので、そのまま拝借します。ありがとうございます。

  1. $path = "\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
  2. $path1 = "HKLM:" + $path
  3. $path2 = "HKCU:" + $path
  4. Get-ChildItem -Path ($path1,$path2) |
  5.    %{Get-ItemProperty $_.PsPath} |
  6.    ?{$_.systemcomponent -ne 1 -and $_.parentkeyname -eq $null} |
  7.    sort displayname |
  8.    select DisplayName,Publisher

この行数でこれだけのものが取得できるのはさすがPowerShellといった感じですね。

とりあえず一つにまとめてみる

ここまでのものをとりあえず1つにまとめてみます。出力はとりあえずこだわらないので単純にコンソールに吐き出すようにします。開始の目印と項目ごとにヘッダ的なものを出力するfunctionだけ定義しておいてあげましょうか。

  1. function start_header()
  2. {
  3.     Write-Output "===================="
  4.     Write-Output "OS information"
  5.     $date = Get-Date
  6.     Write-Output "start time:$date"
  7.     Write-Output "===================="
  8. }
  9.  
  10. function header($title)
  11. {
  12.     Write-Output ""
  13.     Write-Output "——————–"
  14.     Write-Output $title
  15.     Write-Output "——————–"
  16. }
  17.  
  18. start_header
  19. 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のサーバーに配置して実行してみました。結果以下のようになってしまいました。

image

レジストリキーが存在しないという実行時のエラーが出てしまっています。

image

結果に関しても、OSバージョン以降、コマンドレットの結果が表示されていないようです。

存在しないレジストリキーにアクセスしてエラーになってしまう件はTest-Pathを実行して存在する場合のみ処理するように修正します。とりあえずこれでいいことにしておきましょう。

  1. #
  2. header ""
  3. $path = "\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
  4. $path1 = "HKLM:" + $path
  5. $path2 = "HKCU:" + $path
  6. $testpath = @()
  7. $testpath += $path1
  8. if(Test-Path $path2) { $testpath += $path2 }
  9. Get-ChildItem -Path $testpath |
  10.    %{Get-ItemProperty $_.PsPath} |
  11.    ?{$_.systemcomponent -ne 1 -and $_.parentkeyname -eq $null} |
  12.    sort displayname |
  13.    select DisplayName,Publisher

OSバージョン以降のコマンドレットの結果が表示されていない件は、原因はよくわからないのですが、とりあえず結果をFormat-listに出力することでその後のコマンドレットの結果も表示されるようになりました。バグでしょうか?

  1. #OS
  2. header "OS"
  3. [Environment]::OSVersion | fl

(2012/01/24追記)

上記の結果が出力されなくなった件に関して@mutaguchiさんからtwitterでコメントをいただきました。

@ebi PowerShellの特徴として、オブジェクトを(Format-*等を使わず)そのまま出力すると型に応じて決められた書式でされます。このとき異なった型のオブジェクトを混ぜて出力すると直前に出力した型のフォーマットを引き継いで出力されます。Mon Jan 16 18:29:21 via Janetter

mutaguchi

@ebi 今回の場合はOSバージョン情報以降に出力したオブジェクトもOperatingSystemオブジェクトと認識されますがそれらに含まれるプロパティは当然存在しないので何も出力されなくなってしまいます。よって…Mon Jan 16 18:31:07 via Janetter

mutaguchi

@ebi デフォルト出力形式に任せるのではなく、ご提示のコードのようにFormat-*系のコマンドレットで出力するのも一つの方法ですが、出力されるオブジェクトの型を統一させるのでもいいかと。Out-Stringを使ってstringで統一するのが簡単かと思います。Mon Jan 16 18:32:49 via Janetter

mutaguchi

なるほど、原因と対処法が良くわかりました。@mutaguchiさん、ありがとうございました。今回のスクリプトに関してはformat-listで出力することで十分なので、このまま行こうと思いますが、PowerShellスクリプトの要注意事項ですね。

とりあえずこんな感じで

とりあえずこれで意図した結果は出せるようになりました。以下がソースになります。

大したことはしていないのですが、PowerShellで結構な情報が出力出来るイメージはつかめたと思っています。出力形式等は次回以降いじっていこうと思います。

子供3人。家族優先。都内SIer勤務。Windows系中心のインフラよりの何でも屋。脱原発。 Microsoft MVP for Cloud and Datacenter Management.

コメントを残す

メールアドレスが公開されることはありません。