2015-09-15 10 views
1

Написал этот небольшой скрипт, чтобы проверить, существует ли OU, если существует запись в консоль и завершение. Если не существует, создайте OU и выполните некоторые другие действия. Хотя я не могу понять, почему я не могу заставить его работать.Проверьте, не работает ли OU.

По какой-то причине вывод всегда говорит мне, что OU существует, и я уверен, что это не так. Я делаю что-то ужасно неправильно?

Это код:

param (
    [parameter(mandatory=$true)] [string] $servername 
) 

Import-Module ActiveDirectory 

Function CheckOU { 
    $script:OUpath = "OU=$servername,OU=Rechtengroepen,OU=danny,dc=Doenoe,DC=com" 
    $Status = $false 
    $GetOU = Get-ADOrganizationalUnit -Identity $OUpath -ErrorAction SilentlyContinue 

    if ($GetOU -eq $null) { 
     $status = $false 
     Write-Host -ForegroundColor Green "$OUpath does not exist." 
    } else { 
     $Status = $true 
     Write-Host -ForegroundColor Red "$OUpath exists!" 
    } 
    return $Status 
} 

$OUStatus = CheckOU 

if ($OUStatus -eq $true) { 
    Write-Host "$OUpath exists. Function working." 
} else { 
    Write-Host "$OUpath does not exsist, do something." 
} 

Выход:

Get-ADOrganizationalUnit : Directory object not found 
At C:\Scripts\CreateOUgroups\createadgroups_test02.ps1:10 char:14 
+  $GetOU = Get-ADOrganizationalUnit -Identity $OUpath -ErrorAction SilentlyCon ... 
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : ObjectNotFound: (OU=notexistsing...c=Doenoe,DC=com:ADOrganizationalUnit) [Get-ADOrganizationalUnit], ADIdentityNotFoundException 
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.GetADOrganizationalUnit 

OU=notexistsingOU,OU=Rechtengroepen,OU=danny,dc=Doenoe,DC=com exists! 
OU=notexistsingOU,OU=Rechtengroepen,OU=danny,dc=Doenoe,DC=com exists. Function working. 

ответ

4

Использование командлета с параметром -Identity вызывает ошибку терминатора, если объект с указанным идентификатором не существует. Используйте -Filter, чтобы избежать этой проблемы:

Get-ADOrganizationalUnit -Filter "distinguishedName -eq '$OUPath'" 
+1

или вставлять код в заявлении поймать Ьгу 'попробовать {(Get-ADOrganizationalUnit -Identity "НУ = Notexist, dc = домен, DC = ком")} поймать {$ статус = $ false} ' –

+0

Работает! Большое спасибо! – MrPowerUser