web-dev-qa-db-ja.com

ドメインのメンバーではないWindowsホストからPowerShellでActiveDirectoryをクエリする

PowerShell [adsisearcher]を使用して、自分がnotメンバーであるドメインをクエリするにはどうすればよいですか?通常、私はこのようなことをします:

$myAdsi = [adsisearcher]""
$myAdsi.SearchRoot = [adsi]"LDAP://dc=corp,dc=mycompany,dc=com"
$myAdsi.Filter = "objectCategory=computer"

$res = $myAdsi.FindAll()

ドメイン内のホストでこのスニペットを実行すると、期待どおりの結果が得られます。ただし、ドメインへのネットワークアクセスがあるコンピューターから(L2L VPN経由で)これを実行すると、エラーが発生します。

Exception calling "FindAll" with "0" argument(s): "The specified domain either does not exist or could not be contacted.
"
At line:11 char:33
+ $adComputers = $searcher.FindAll <<<< ()
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

[adsisearcher]に認証方法を指示する資格情報を提供していないため、これはある程度予想されます。私の質問は、自分がメンバーではないドメインに対して認証することを[adsisearcher]に通知するにはどうすればよいですか?

4

私の最後の返信を編集しました。申し訳ありませんが、お返事を差し上げるまでに少し時間がかかりました。以下は http://powershell.com/cs/blogs/ebookv2/archive/2012/03/26/chapter-19-user-management.aspx から恥知らずにコピーされたものです:

[ADSI]は、DirectoryServices.DirectoryEntry .NETタイプへのショートカットです。そのため、以前の接続もこの方法で設定できたはずです。

$domain = [DirectoryServices.DirectoryEntry]""
$domain
distinguishedName
-----------------
{DC=scriptinternals,DC=technet}

したがって、これを試して、別のドメインに資格情報を提供してください。

$domain = new-object DirectoryServices.DirectoryEntry("LDAP://10.10.10.1","domain\user", "secret")
$domain.name
scriptinternals
$domain.distinguishedName
DC=scriptinternals,DC=technet

エラーメッセージがそれを反映するためにより正確であることを望みますが、それは認証の問題です。これはあなたを助けるはずです。

4
Ryan Ries