Powershell経由でリモートサーバーに接続し、ActiveDirectoryモジュールを使用しようとしています。これをローカルで実行しようとすると、すべてが問題ないようです。
PS C:\Users\bar> Import-Module ActiveDirectory
PS C:\Users\bar> Get-ADUser 'baz'
DistinguishedName : CN=Foo Baz,OU=baz.myhost.com,OU=FooMachine,DC=foo,DC=blah,DC=loc
Enabled : True
GivenName : Baz
Name : Foo Baz
ObjectClass : user
ObjectGUID : <some guid>
SamAccountName : baz
SID : <more info here>
Surname : Baz
UserPrincipalName : baz@foo
私たちがリモートで同じことをするとき、私たちはそれほど幸運ではありません。
C:\> Enter-PSSession -ComputerName 172.1.2.3 -Credential foo\bar
[172.1.2.3]: PS C:\Users\bar\Documents> Import-Module ActiveDirectory
WARNING: Error initializing default drive: 'Unable to contact the server. This
may be because this server does not exist, it is currently down, or it does not
have the Active Directory Web Services running.'.
[172.1.2.3]: PS C:\Users\bar\Documents> Get-ADUser 'baz'
Unable to contact the server. This may be because this server does not exist, i
t is currently down, or it does not have the Active Directory Web Services runn
ing.
+ CategoryInfo :
+ FullyQualifiedErrorId : Unable to contact the server. This may be becaus
e this server does not exist, it is currently down, or it does not have th
e Active Directory Web Services running.,Microsoft.ActiveDirectory.Managem
ent.Commands.GetADUser
[172.1.2.3]: PS C:\Users\bar\Documents>
クリストファー、そのドメインで実行されている2〜2008 R2ドメインコントローラーがあります。 Active Directory Webサービスは両方で実行されています( "Import-Module ActiveDirectory"はサーバーコンソールで正常に動作します-ところでドメインコントローラではありません)
このシナリオではCREDSSPが必要ですか?
これは同様の問題を解決するためにCredSSPを使用する例です 私はこれをテストしましたが、質問に投稿したAD Webサービスエラーを解決するために機能します。
記事から要約するには、まずクライアントとサーバーの両方でCredSSPを有効にする必要があります。
クライアント:Enable-WSManCredSSP -Role Client -DelegateComputer [computer name] -Force
サーバー:Enable-WSManCredSSP -Role Server –Force
次に、他のマシンに接続するための資格情報を取得または作成し、その資格情報を使用するセッションを作成する必要があります。次に、Invoke-Command
を使用して、その新しいセッションのスクリプトブロックでPowerShellコマンド/スクリプトを実行できます。これは、質問のコマンドを使用した、記事の一部の例です。
$credential = Get-Credential -Credential iammred\administrator
$session = New-PSSession -cn SQL1.Iammred.Net -Credential $credential -Authentication Credssp
Invoke-Command -Session $session -ScriptBlock { Import-Module ActiveDirectory; Get-ADUser 'baz' }
ただし、これはインタラクティブに認証情報を要求するため、それを回避したい場合は、代わりに$credential
に対して次のようにする必要があります。
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "DOMAIN\username",$pass;
ここで、$pass
は、アカウントに関連付けられたパスワードの安全な文字列です。
私はいくつかの環境で同じ問題を抱えていて、機能したのはファイアウォールの変更でした。どうやらADWSはポート9389を使用しています。これは、Powershellを使用してリモートでDCを管理しようとしているサーバーからは許可されていません。ポートを許可すると、すべてがスムーズに機能します。 。
ADモジュールを使用するには、AD PowerShellモジュールを備えたServer 2008 R2またはWindows 7マシンに加えて、Server 2008 R2 ADサーバーを実行していない場合は、次のものが必要です。
上記のアドオンを備えたServer 2003または2008 ADサーバーを使用する場合でも、ADモジュールを利用するには、Server 2008 R2またはWindows 7システムが必要です。 PowerShellリモート処理を使用すると、PowerShell v2がインストールされた任意のシステムを使用して、ADモジュールのコマンドレットをリモートで呼び出すことができます。
iPアドレスを使用してサーバーに接続した。この方法では、認証にKerberosを使用できません(そのため、資格情報を使用する必要がありました)。したがって、サーバーがユーザーに代わって認証しようとすると、2番目のホップの問題が発生します。サーバーは資格情報をサードパーティに渡すことができないため、エラーが発生します。
このシナリオでは、Kerberos経由でクライアントをサーバーに接続する必要があります。これは、クライアントがドメインメンバーであり、IPアドレスではなくサーバー名を使用している場合にのみ可能です。
トビアスwww.powershell.com