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]
に通知するにはどうすればよいですか?
私の最後の返信を編集しました。申し訳ありませんが、お返事を差し上げるまでに少し時間がかかりました。以下は 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
エラーメッセージがそれを反映するためにより正確であることを望みますが、それは認証の問題です。これはあなたを助けるはずです。