2009/11/20

PowerShell 1.0でアプリの一覧を取ってみたものの

東京の寒さを報せるニュースをみていたら、街を歩く人達が自分よりも暖かそうな格好をしている事に気がつきました。うーん、油断してたかなぁ。でもまだここら辺は雪は降ってないし、大丈夫じゃないかなぁと思っています。

たまたまokwaveでWindowsに登録されているアプリケーションの一覧を取る方法について質問されているのをみました。 手元のWindowsXP Home SP3でpowershellを使う方法を試してみたところ、エラーになってしまいました。

PS C:\Documents and Settings\Owner> gwmi win32_product


IdentifyingNumber : {15DA9946-FB08-3742-A385-9F8AAA863D71}
Name              : Microsoft Visual F# Runtime 1.0
Vendor            : Microsoft Corporation
Version           : 10.0.21006
Caption           : Microsoft Visual F# Runtime 1.0

Get-WmiObject : エラーです
発生場所 行:1 文字:5
+ gwmi  <<<< win32_product

"gwmi"は"Get-WmiObject"のエイリアスです。 調べてみたところバグと認識されているものと挙動は同じようです。 [ 荒井省三のBlog::[PS]WMIの取り扱いについて ]

まだBeta版のVisualStudio2010を入れているので、まさかその関連でWMI周りも変ってしまったのかと思い、VMWareのスナップショットをVisualStudioを入れる前に戻して確認してみました。 結果は無事に動きましたが、関連についてはいまいちはっきりしません。

C:\Windows\System32\直下の最近変更されたdllを眺めてみても、wmi.dllとかは変更されていないし、VisualStudio2010が変な情報をレジストリに登録してしまったのかなぁ。そんなことあるんだろうか。

ソフトウェアのインベントリ(台帳)管理のためには、一覧の取得は重要な機能だと思うのですが、レジストリをみなきゃ確実じゃないとしたら、ちょっとインタフェースがいけていないなと思います。

まぁインベントリ管理ソフトウェアを使えという話しになるかもしれませんが、使った事がある人なら、情報整理のための追加で必要な膨大なマンパワーと価格を考えて発狂しそうになったことでしょう。

PowerShell 2.0を試してみる

2.0自体はマイクロソフトのサイトからダウンロード可能です。その際に1.0をアンインストールするように言われますが、プログラムの追加と削除で”更新プログラムの表示”オプションにチェックを入れないと一覧に表示されず、アンインストールできません。更新プログラムの一部なんですね…。

導入が終ると”すべてのプログラム”の"Accesories"フォルダの中にPowerShellのプログラムが導入されていました。昔どこかで試したIntegrated Scripting Environment (ISE)が入っています。

で、早速win32_productにアクセスして試してみると、似たようなエラーが起ります。

VisualStudio 2010 Ultimate beta2をアンインストールしてみる

beta2を入れる前にbeta1を削除する手順はあるのですが、beta2自身をアンインストールする手順はUltimate beta2のリリースノートの中ぐらいしか見当りませんでした。

正しい順番でアンインストールする必要があるならサポートプログラムが欲しいところです。 まだbetaだからしょうがないけど、製品版がでても同じなんだろうなぁ…。 まっさらな環境にbeta2をインストールしている場合のアンインストール順番は以下の通り。

  1. Uninstall all instances of Visual Studio 2010 products (for example, Visual Studio 2010 Ultimate).
  2. Web Deployment Tool (Web配置ツール)
  3. Silverlight 3 SDK (Microsoft Silverlight 3 SDK - 日本語)
  4. SQL Server 2008 Management Objects (SQL Server 2008 R2 Management Objects)
  5. SQL Server CLR Types (SQL Server System CLR Types)
  6. SQL Server 2008 (Microsoft SQL Server 2008)
  7. SQL Server 2008 Native Client (Microsoft SQL Server 2008 Native Client)
  8. SQL Server Compact 3.5 SP2 (Microsoft SQL Server Compact 3.5 SP2 Beta 日本語版)
  9. Visual Studio 2010 Tools for Office Runtime Beta 2 (Visual Studio 2010 Tools for Office Runtime Beta 2 (x86) 及び 同 Language Pack)
  10. The .NET Framework version 4 Language Pack (未導入)
  11. The .NET Framework version 4 Extended (reboot, if prompted) (Microsoft .Net Framework 4 Extended Beta 2)
  12. The .NET Framework version 4 Client (reboot, if prompted) (Microsoft .Net Framework 4 Client Beta 2)

"プログラムの変更と削除”の一覧に表示される時には、日本語の名前で登録されていたり、リストにある名前の通りではなく"Microsoft"が前に付いたりします。 ”SQL Server CLR Types”などは逆に"Microsoft"が前に付かないので、見過してしまいそうです。

また一連の操作の中で"Microsoft SQL Server 2008"を削除する時には、Windowsの再起動処理で失敗マークが付いてしまい、一旦再起動した後でなければアンインストールできませんでした。

明記されていませんが、Visual Studio 2010 Tools for Office Runtime Beta2 (x86)を削除する時には、同 Language Packも削除するべきでしょう。

”Microsoft .NET Framework 4 Beta 2 日本語 Language Pack”は導入されていませんでした。 "Microsoft .Net Framework 4 Extended"と"同 Client"を削除すると、対応するLanguage Packは自動的に削除されました。ここの挙動はOffice Runtimeと違いますね。

まぁBeta版ですからね。いいんですけれど、やっぱり面倒だなぁ。

途中から"gwmi win32_product"が動く

"Web Deployment Tool" (Web配置ツール)を削除して、Silverlight 3 SDKのアンインストールを始めてから、無事にアプリケーションの一覧が表示されるようになりました。

でも全部アンインストールしてから手動でSilverlight 3 SDKとWeb Deployment Toolをインストールしても現象は再現しませんでした。

PowerShellは良いんですけどね、この挙動だと仕事でインベントリ管理にはちょっと使えないかなぁ。

0 件のコメント: