トップ回答者
サーバ上に導入されているソフトウェアの一覧を取得する。

質問
回答
-
サーバーのOSは何でしょうか?
WIndows系OSであれば、Get-WmiObjectコマンドレットは -compterName というパラメータがあるので、これを使用したら取得できませんか?
とりあえず
Get-WmiObject -computerName コンピュータ名 win32_product
でどうでしょうか
自分も試したことがなく、確証はありませんが...
HIRO's.NET http://hiro.wankuma.com/
HIRO's.NET Blog http://blogs.wankuma.com/hiro/ -
HIROs-NETです。
先ほど WnXP + PowerShell から Win2KのPCに対して行ってみたところ、上記でうまくいきました。
ということで、試してみてください。
HIRO's.NET http://hiro.wankuma.com/
HIRO's.NET Blog http://blogs.wankuma.com/hiro/[/
すべての返信
-
サーバーのOSは何でしょうか?
WIndows系OSであれば、Get-WmiObjectコマンドレットは -compterName というパラメータがあるので、これを使用したら取得できませんか?
とりあえず
Get-WmiObject -computerName コンピュータ名 win32_product
でどうでしょうか
自分も試したことがなく、確証はありませんが...
HIRO's.NET http://hiro.wankuma.com/
HIRO's.NET Blog http://blogs.wankuma.com/hiro/ -
HIROs-NETです。
先ほど WnXP + PowerShell から Win2KのPCに対して行ってみたところ、上記でうまくいきました。
ということで、試してみてください。
HIRO's.NET http://hiro.wankuma.com/
HIRO's.NET Blog http://blogs.wankuma.com/hiro/[/ -
返信ありがとうございます。
PS初心者です。
Powershellの実行対象OS:Windows Server 2003で
データ取得対象OS :Windows Server 2003, 2003R2です。
実行対象OSが、Windows 2003のため、XPにはあるのですが、wmiobjectのwin32_productが存在しないようなのです。
※windowsXP端末からの場合、サーバにアクセスするアカウントでのログオンはできないため、サーバ上から、wmiobjectで値を取得するさいに、アクセス拒否されてしまいます。
取得するサーバに一度、サーバにアクセス権限のあるユーザアカウントでnet useなどで認証しいても結果は同様でした。
---Error内容---
Get-WmiObject : アクセスが拒否されました。 (HRESULT からの例外: 0x80070005 (E_ACCESSDENIED))
発生場所 行:1 文字:14
+ Get-WmiObject <<<< -ComputerName server1 win32_product-------------------
もう少し、Windows Server 2003でないか模索してみます。
お忙しいところ、ありがとうございました。
-
PS初心者さん、こんにちは。
Windows Server 2003 では win32_product を含む MSI Provider は、
デフォルトではインストールされないようです。
[コントロールパネル] - [プログラムの追加と削除] - [Windows コンポーネントの追加と削除]
- [管理とモニタツール] - (詳細) - [WMI Windows インストーラ プロバイダ]
をチェックしてインストールすると、win32_product も値が返ってくるようになりました。
ただ、上記のエラーは、アクセス権がないと言っていますね。
Administrators グループのユーザでアクセスされていますでしょうか?
それとも管理者権限のないユーザーでしょうか。 -
こんにちは。フォーラムオペレータの栗原麻里 です。
HIROs-NET さん、回答ありがとうございます。
PS初心者 さん、フォーラムのご利用ありがとうございます。
その後いかがでしょうか?
有用な情報だと思いましたので、HIROs-NET さんの回答へ回答済みチェックをつけさせていただきました。
追加の質問等ありましたら、ぜひ投稿してください!回答済みチェックが付くことにより、フォーラムをご利用していただいている皆様が、有用な情報を
見つけやすくなります。
ですので、回答された情報が有用だと思われましたら、ぜひ回答済みボタンを押してチェックを付けて
くださいね!PS初心者 さんはチェックを解除することもできますので、ご確認ください。
それでは、ぜひまたご活用ください!
-
大量のサーバから一気に情報収集したいといった用途でしょうか?
かなり遅いレスですが、私も同様の用途で苦労し、何とかめどがついたので御参考まで。
リモートレジストリ経由で取得するやり方です。
XP端末から実行し、リモートの Win200 と Win2003 への接続で動作確認しました。
まだ、完全に詰めてはいませんが、下記ソースで上手くいきました。
---------------------------------------------------------------------------------
$対象ホスト="Host"
$対象パスワード="Password"
$SWレジストリ="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
net use \\$対象ホスト\IPC$ /user:$対象ホスト\administrator $対象パスワード$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, $対象ホスト)
$Reg.OpenSubKey($SWレジストリ).GetSubKeyNames() | ForEach-Object{
$Reg.OpenSubKey($SWレジストリ + "\\" + $_).GetValue("DisplayName")
} | Sort-Object---------------------------------------------------------------------------------
(全角「:」は、半角「:」に置きかえて下さい)
対象サーバ上で「WMI Windows インストーラ プロバイダ」 を有効にする必要はありませんが、
当然ながら「Remote Registry」のサービスが起動している必要があります。
私の場合は 「Remote Registry」が上がっていない場合は、WMI経由で起動する
ようにしようかと考えています。
ちなみに、WMI接続でポップアップのパスワード入力が求められる場合の回避法です。
---------------------------------------------------------------------------------
$接続ユーザー = "User"
$接続パスワード = "Password"$暗号化パスワード = ConvertTo-SecureString -string $接続パスワード -asPlainText -force
$資格情報 = New-Object System.Management.Automation.PsCredential $接続ユーザー,$暗号化パスワード
---------------------------------------------------------------------------------上記後、WMI接続時に 「-Credential $資格情報」 としてやれば大丈夫だと思います。