今回は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(http://a1.twimg.com/images/themes/theme4/bg.gif) #0099b9;padding:20px;}

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

mutaguchi

.bbpbox{background:url(http://a1.twimg.com/images/themes/theme4/bg.gif) #0099b9;padding:20px;}

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

mutaguchi

.bbpbox{background:url(http://a1.twimg.com/images/themes/theme4/bg.gif) #0099b9;padding:20px;}

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

mutaguchi

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

とりあえずこんな感じで

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

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