5

まだ存在しない場合、ADSI オブジェクトを使用してユーザーを作成しようとしています。ここに私が得ている奇妙な結果があります

#Check a user that I know exists
[ADSI]::Exists("WinNT://localhost/micah,user") #True

#Check a group that I know exists
[ADSI]::Exists("WinNT://localhost/administrators,group") #True

#Check a group that DOESN'T exist
[ADSI]::Exists("WinNT://localhost/whoops,group") #False

#Check a user that DOESN'T exist (NOT specifying that the obect is a user)
[ADSI]::Exists("WinNT://localhost/test") #False (This works fine)

#Check a user that DOESN'T exist (specifying that the obect IS a user)
[ADSI]::Exists("WinNT://localhost/test,user") 
#Throws exception "The user name could not be found"

最後の行は私には意味がありません。特にユーザーを探していると指定すると例外がスローされるのに、ユーザーが欲しいと指定しないと問題なく動作するのはなぜですか? これは私にはまったく直感的ではないようです。私は何が欠けていますか?

4

1 に答える 1

6

これはバグであり、マイクロソフトは修正しません -

http://connect.microsoft.com/VisualStudio/feedback/details/337682/directoryentry-exists-throws-exception-for-non-existent-winnt-object

このバグは修正されないため、解決中です。設計は正しくありませんが...アプリはこれを期待して作成されている可能性があり、変更によりそれらのアプリが壊れる可能性があります。回避策は例外をキャッチすることです - きれいではなく、同意されていますが、修正の正当な理由はありません。ドキュメントを修正する必要があるため、ドキュメント ワークアイテムを開きます。

于 2012-05-25T17:31:44.537 に答える