web-dev-qa-db-ja.com

「アクセスが拒否されました」エラーを与えるPowerShell Remoting

PowerShell Remotingを使用して、リモートドメインのサーバーからいくつかのディスクサイズをチェックしようとしていますが、実行中のコマンドが機能しません。

状況は次のとおりです。

  • ソースサーバーはドメインAにあります
  • 宛先サーバーはドメインBにあります
  • これらのドメイン間に信頼関係はありません

ドメインBのサーバーはExchange 2010を実行しており、次のコマンドを使用してサーバーAからExchange 2010固有のコマンドを実行できます。

$Session = New-PSSession -ConfigurationName Microsoft.Exchange –ConnectionUri $ConnectionURI -Credential $Credentials -Authentication Basic
Import-PSSession $Session

問題は、このセッションを使用してこのサーバーに対してExchange以外のコマンドを実行できないことです。その場合、コマンドを理解できないと表示されます。 Invoke-CommandでGet-Commandをチェックして実行し、確立されたセッションに設定された-Session変数はExchangeコマンドのみを返します。

だから私はInvoke-Commandと関連するComputerName、Authentication type、Credentialsを使用しようと思ったが、これは失敗しています:

Invoke-Command -ScriptBlock {Get-Service} -ComputerName "Servername.destination.com" -Credential $Credentials -Authentication "Basic"

これはエラーです:

[servername.destination.com] Connecting to remote server failed with the following error message : The WinRM client can
not process the request. The authentication mechanism requested by the client is not supported by the server or unencry
pted traffic is disabled in the service configuration. Verify the unencrypted traffic setting in the service configurat
ion or specify one of the authentication mechanisms supported by the server.  To use Kerberos, specify the computer nam
e as the remote destination. Also verify that the client computer and the destination computer are joined to a domain.
To use Basic, specify the computer name as the remote destination, specify Basic authentication and provide user name a
nd password. Possible authentication mechanisms reported by server:     Negotiate Kerberos For more information, see th
e about_Remote_Troubleshooting Help topic.
    + CategoryInfo          : OpenError: (:) [], PSRemotingTransportException
    + FullyQualifiedErrorId : PSSessionStateBroken

そこで、ターゲットサーバーのWSMAN構成に入り、基本認証と暗号化されていない接続を許可するための関連設定を設定します。

cd WSMan:\localhost\Service
Set-Item AllowUnencrypted $True
cd .\Auth
Set-Item Basic $True

また、送信元ドメインサーバーの信頼できるホストに送信先サーバーを追加しました。

cd WSMan:\localhost\Client
Set-Item TrustedHosts servername.destination.com

そうすると、エラーが変わりますが、あまり役に立ちません:

PS WSMan:\localhost\Client> Invoke-Command -ScriptBlock {Get-Service} -ComputerName "servername.destination.com" -Creden
tial $Credentials -Authentication "Basic"
[servername.destination.com] Connecting to remote server failed with the following error message : Access is denied. Fo
r more information, see the about_Remote_Troubleshooting Help topic.
+ CategoryInfo          : OpenError: (:) [], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionStateBroken

また、-Credential(Get-Credential)を介してDomain Admin資格情報を使用しようとしましたが、これは同じ問題で失敗します。

使用しようとしているユーザーは、問題のサーバーのローカル管理者ユーザーのメンバーであるため、PSSessionConfigurationコンテナーにアクセス許可が既に設定されている必要があります。

私はこれでさらなるポインターが大好きです!私は単にWMIを使用しますが、現時点ではファイアウォール経由では有効になっていません。

23
HungryHippos

最近同様の問題がありました。接続しているユーザーがリモートマシンで適切な権限を持っているかどうかを慎重に確認することをお勧めします。

次のコマンドを使用して権限を確認できます。

Set-PSSessionConfiguration -ShowSecurityDescriptorUI -Name Microsoft.PowerShell

ここでこのヒントを見つけました:

http://blogs.technet.com/b/heyscriptingguy/archive/2010/11/17/configure-remote-security-settings-for-windows-powershell.aspx

それは私のためにそれを修正しました。

21
Olivier Boudry

管理者としてコマンドプロンプトまたはPowershell ISEを実行すると、これが修正されました。

2
Cirem