PowerShell Remotingを使用して、リモートドメインのサーバーからいくつかのディスクサイズをチェックしようとしていますが、実行中のコマンドが機能しません。
状況は次のとおりです。
ドメイン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を使用しますが、現時点ではファイアウォール経由では有効になっていません。
最近同様の問題がありました。接続しているユーザーがリモートマシンで適切な権限を持っているかどうかを慎重に確認することをお勧めします。
次のコマンドを使用して権限を確認できます。
Set-PSSessionConfiguration -ShowSecurityDescriptorUI -Name Microsoft.PowerShell
ここでこのヒントを見つけました:
それは私のためにそれを修正しました。
管理者としてコマンドプロンプトまたはPowershell ISEを実行すると、これが修正されました。