web-dev-qa-db-ja.com

-Name paramを使用すると、Get-Clusterコマンドレットが失敗する

概要

Get-Clusterを呼び出すと、PowerShellはクラスターの名前を返します。簡単にするために、それをCluster1と呼びましょう。 Get-Cluster -Name Cluster1を呼び出すと、エラーで失敗します。

エラー:

Get-Cluster : Check the spelling of the cluster name. Otherwise, there might be a problem with your network. Make sure
the cluster nodes are turned on and connected to the network or contact your network administrator.
    The RPC server is unavailable
At line:1 char:1
+ Get-Cluster -Name Cluster1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ConnectionError: (:) [Get-Cluster], ClusterCmdletException
    + FullyQualifiedErrorId : ClusterRpcConnection,Microsoft.FailoverClusters.PowerShell.GetClusterCommand

詳細

私の最初の考えは、コマンドレットを間違って使用しているか、winrmが機能していない(そうです)ということです。また、それが失敗の原因であると呼ばれる方法に違いがあるのではないかと思いました。そのロジックに従って、コマンドレットの次のtechnetページを確認しました。

調査http://technet.Microsoft.com/en-US/library/hh847254(v = wps.630).aspx

そこに書かれていることに基づいて、私は明らかなユーザーエラーを識別できませんでした。だから私はそれを理解するためにいくつかのことを試みました。最初は、タイピングを常に台無しにしているのではないかと思ったので、次のようにしました。

$Cluster = Get-Cluster
($cluster.Name -like "Cluster1")

条件付きはTrueを返すので、私はタイピングのクラスターではありません。次に、私は以下を試しました:

Get-Cluster | Where-Object{$_.Name -like "Cluster1"}

もちろん、どちらがクラスターオブジェクトを返します。それで、ここで何が起こっているのですか? Get-Cluster -Name "Cluster1"との違いは何ですか?

編集

Powershellからのバージョン情報:

PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.34209
BuildVersion                   6.3.9600.17090
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.2
2
Colyn1337

作業中のいくつかのクラスターに対してGet-Clusterを実行しているという私の観察に基づくと、-Nameは名前解決を使用しているように見えたので、名前の解決に問題を引き起こすものがあると失敗します。名前を付けたとしても、ローカルマシンです。

クラスター名とクラスターサービス名、およびクラスター内の個々のノードの名前で試してみました。

また、HOSTSファイルに、クラスターの1つに偽の名前を指すエントリを追加し、その名前をGet-Clusterで正常に使用できました。

私にとってこれは、-Nameの使用がOSの標準的な名前解決に完全に依存していることを強く示唆しています。

名前のないGet-Clusterが機能するのに対し、Get-Cluster -Name localhost(または現在のマシンの実際のホスト名)が機能しない場合は、名前パラメーターがないと、Get-Clusterが通信を試みることを示唆しています。現在のマシン上で直接クラスターサービス。名前解決は必要ありません。

名前解決に加えて、-Nameを使用すると(ローカルマシンであっても)宛先サーバーにRPC接続が確立されると思います。そのため、名前解決が機能しても、RPCサービスが実際に利用できないか、ファイアウォールがオンになっていると、実際にその接続がブロックされ、表示されたエラーが発生する可能性があります。

現在、テスト環境にクラスターがなく、本番クラスターで名前解決またはRPCを意図的に壊すことができないため、これをテストできませんでした。

残念ながら、私はこの仮説を信頼できる情報源で裏付けることができませんでした(この動作の明確な説明を見つけることができませんでした)。

1
briantist