2016-07-29 70 views
0

我想驗證我的OU的功能與下面的代碼片段驗證參數爲OU和CN

Param(
    [parameter(Mandatory=$True,Position=1)] 
    [ValidateScript({Get-ADOrganizationalUnit -Identity $_ -Server $Domain})] 
    [String]$SourceOu 
) 

這適用於正常的OU喜歡像一個魅力以下功能不起作用

"OU=Desktops,OU=Germany,DC=dom,DC=de") 

但我也需要處理建於公元容器,如這些

"CN=Computers,DC=dom,DC=de", 

不幸的是,他們發金正日(也許是因爲他們的distinguishedName開始與CN而不是與OU像其他OU)與錯誤:

Delete-OldADaccount : Cannot validate argument on parameter 'SourceOu'. Cannot find an object with identity: 'CN=Computers,DC=dom,DC=de' under: 'DC=dom,DC=de'.

有沒有解決的辦法,也可以我只是不能與一個小命令檢查這兩種類型的? ?:(

回答

2

也許只是檢查對象是容器

Param(
    [parameter(Mandatory=$True,Position=1)] 
    [ValidateScript({"container","organizationalUnit" -contains (Get-ADObject -Identity $_ -Server $Domain).ObjectClass})] 
    [String]$SourceOu 
) 

編輯:。嗯它應該是容器或組織單位更新

+0

它的工作原理,但說實話,我不明白爲什麼......你能解釋一下我使用過的語法嗎?:/我不明白那個構造:( – user1276012

+0

給出我的druthers,我會構造它: – markg

+0

對不起。沒有及時完成編輯。第一部分是數組。如果後面的元素出現在數組之前,那麼「-contains」運算符的值爲真。最後一部分查找廣告對象,只返回是ObjectClass屬性。在PS 3 +中,您可以切換它們並使用「-in」運算符,這更自然:(get-adobject $ _)。ObjectClass -in「organizationalUnit」,「container」 – markg