49

私が走るとき

Get-WmiObject win32_SystemEnclosure -Computer hostname | select serialnumber

ローカル ホストとリモート ホストの両方で機能します。

を使用してホストのリストに対してこれを行うと、

ForEach ($_ in gc u:\pub\list.txt) {
    Get-WmiObject win32_SystemEnclosure -Computer $_ | select serialnumber | format-table -auto @{Label="Hostname"; Expression={$_}}, @{Label="Service Tag"; Expression={$_.serialnumber}}
}

それは返す

Get-WmiObject : RPC サーバーを利用できません。(HRESULT からの例外: 0x800706BA)

4

20 に答える 20

41

各リモート マシンのファイアウォールで「Windows Management Instrumentation (WMI-In)」ルールが有効になっていることを確認します。

または、管理コマンド/Powershell プロンプトで次を実行します。

netsh advfirewall firewall set rule group="Windows Management Instrumentation (WMI)" new enable=yes
于 2012-07-05T05:45:13.257 に答える
18

さまざまな問題が原因である可能性があります。あなたの場合、どれが問題なのかはわかりません。

以下の理由が考えられます。

  • ホスト PC またはターゲット PC、あるいはその両方で DCOM が有効になっていません。
  • ファイアウォールまたはウイルス対策でさえアクセスを妨げています。
  • WMI 関連のサービスはすべて無効になっています。

一部の WMI 関連サービスは次のとおりです。

  • リモート アクセス自動接続マネージャー
  • リモート アクセス接続マネージャー
  • リモート プロシージャ コール (RPC)
  • リモート プロシージャ コール (RPC) ロケータ
  • リモート レジストリ

DCOM 設定については、次を参照してください。

  • キー: HKLM\Software\Microsoft\OLE、値:EnableDCOM

値は 'Y' に設定する必要があります。

于 2012-07-05T06:26:58.697 に答える
16

コードで正しいマシン名が使用されていない可能性があります。再確認する必要があります。

エラーは次のとおりです。

Get-WmiObject : RPC サーバーを利用できません。(HRESULT からの例外: 0x800706BA)

これは、マシンに到達できない場合に得られる結果です。したがって、ファイアウォールの提案は合理的ですが、この場合、これが機能すると言っているため、おそらく正しくありません。

Get-WmiObject win32_SystemEnclosure -Computer hostname

したがって、あなたの場合、この行が実行されたときのようです:

Get-WmiObject win32_SystemEnclosure -Computer $_

$_ には適切なコンピューター名が含まれていません。$_ の型と内容を確認できます。ファイルの内容に問題がある可能性があります。ファイルが正しいように見える場合は、行が適切に終了していない可能性があります。Write-Host を使用して詳しく見てみましょう。

ForEach ($_ in gc u:\pub\list.txt) {
    Write-Host "Get-WmiObject win32_SystemEnclosure -Computer '$_'"
    Get-WmiObject win32_SystemEnclosure -Computer $_ | select serialnumber | format-table -auto @{Label="Hostname"; Expression={$_}}, @{Label="Service Tag"; Expression={$_.serialnumber}}
}
于 2015-06-09T22:15:01.057 に答える
3

他の回答でいくつかの提案を試した場合、最も顕著なのは次のとおりです。

  • David Brabant の回答:Windows Management Instrumentation (WMI)インバウンド ファイアウォール ルールが有効になっていることを確認する
  • Abhi_Mishra の回答: レジストリで DCOM が有効になっていることを確認する

次に、このエラーが発生する他の一般的な理由を検討してください。

  • リモートマシンはオフです
  • 無効なコンピュータ名を指定しました
  • あなたとターゲット コンピューターの間にネットワーク接続の問題があります。
于 2014-11-04T00:18:41.127 に答える
3

解決しました。

WORKGROUP にあるように構成されたリモート VM に対して次のスクリプト (部分的) を実行しようとすると、まったく同じエラー メッセージが表示されました。

Restart-Computer -ComputerName MyComputer -Authentication Default -Credential $cred -force

ファイアウォールを無効にすると、同じ WORKGROUP 内の別の VM からスクリプトを実行できることに気付きましたが、ドメイン上のマシンからは実行できませんでした。これら 2 つのことと Stackflow の提案により、次の解決策にたどり着きました。

注: これらの設定は、自己責任で変更してください。これらの変更を適用する前に、これらの変更のセキュリティへの影響を理解する必要があります。

リモート マシンで次の操作を行います。

  • テスト中にファイアウォールを無効にした場合は、ファイアウォールを再度有効にしてください。
  • PowerShell から Enable-PSRemoting を実行して成功する
  • wf.msc (セキュリティが強化された Windows ファイアウォール) に移動します。
  • プライベート/パブリック インバウンド ' Windows Management Instrumentation (DCOM-In) 'ルールが有効になっていることを確認し、'リモート アドレス' プロパティが 'Any' またはより安全なものであることを確認します。
  • プライベート/パブリック インバウンド ' Windows Management Instrumentation (WMI-In) 'ルールが有効になっていることを確認し、'リモート アドレス' プロパティが 'Any' またはより安全なものであることを確認します。

オプション: 「 Enter-PSSession 」などのコマンドを実行する場合は、次の操作も必要になる場合があります。

  • プライベート/パブリック インバウンド ' Windows Management Instrumentation (ASync-In) ' ルールが有効になっいることを確認し、'リモート アドレス' プロパティが 'Any' またはより安全なものであることを確認します。
  • 5985 へのインバウンド TCP ポートを開きます

重要!- 他のネットワーク サービスが問題なく起動しているにもかかわらず、リモート VM が再起動してから「Enter-PSSession」コマンドに応答するまでに約 2 分かかります。数分待ってから試してください。

補足:「リモート アドレス」プロパティを「任意」に変更する前は、両方のルールが「ローカル サブネット」に設定されていました。

于 2015-09-16T22:29:10.537 に答える
2

「リモート管理」のファイアウォールの例外を追加することを提案するこのブログ投稿を見つけました。これは、Windows Server 2008 Enterprise システムで機能しました。

http://mikefrobbins.com/2012/03/08/get-wmiobject-the-rpc-server-is-unavailable-exception-from-hresult-0x800706ba/

于 2014-04-12T00:03:37.947 に答える
2

ターゲット システムで次の FW ルールを有効にすると、Win2k16 での問題が解決されました。

  • Windows Management Instrumentation (WMI 受信)
  • 分散トランザクション コーディネーター (RPC)
  • 分散トランザクション コーディネーター (RPC-EPMAP)
于 2016-11-25T09:50:34.433 に答える
0

ドメイン内の複数のマシンでもこの問題に遭遇したことを付け加えておきます。問題のあるマシンのリストを作成し、それらをすべてテキスト ファイルに追加して、そこからスクリプトを実行しました。昇格された権限を使用してCMDプロンプトからこれを実行しました。

 psexec @firewallFix.txt -d netsh advfirewall firewall 
        set rule name="Windows Management Instrumentation (WMI-In)" 
        profile=domain new enable=yes profile=domain
于 2015-01-08T15:45:37.727 に答える
-2

私はまったく同じ問題に遭遇し、ここで答えを見つけました: http://powershellcommunity.org/Forums/tabid/54/aft/7537/Default.aspx

入力ファイルの各行の終わりに空白文字がありました。ファイルにも含まれている場合は、それらを削除するだけでスクリプトが機能するはずです。

于 2012-09-19T08:50:36.750 に答える