Von Holger Voges auf Dienstag, 29. November 2016
Kategorie: Tipp

Die Existenz einer OU testen mit Powershell

Leider bietet das Powershell AD-Modul keine Möglichkeit, auf das Vorhandensein einer Organizational Unit zu testen. Diese Funktion lässt sich aber einfach nachrüsten. 

Grundsätzlich kann man die Existenz einer OU testen, indem man einfach das Cmdlet Get-OrganizationalUnit verwendet. Prüft man die Abfrage in einer IF-Bedingung, wird der Scriptblock des IF ausgeführt, wenn die OU existiert. Das Ganze hat allerdings einen Haken, denn Get-ADOrganizationalUnit bricht die Skriptverarbeitung mit einem unbehandelten Fehler ab, wenn die OU nicht existiert.

If ( Get-ADOrganizationalUnit -Identity "OU=test,DC=Netz-Weise,DC=DE" ) { $true }
get-adorganizationalUnit : Directory object not found

Dieses Verhalten kann man sich zunutze machen, indem man die Ausführung des Get-ADOrganizationalUnit mit Try-Catch ausführt. Wird ein unbehandelter Fehler ausgeführt, wird die Catch-Block aufgerufen und ausgeführt. In diesem muß man jetzt nur noch einen $False zurück liefern. 

function Test-ADOrganizationalUnit

{

  <#

      .SYNOPSIS

      Test Existance of an Organizational Unit and Returns True of False.

      .DESCRIPTION

      The Function is testing an OU-Path. If the OU exists, the function returns $true, else $false.

      It can be used inside an IF-Statement.

      .EXAMPLE

      Test-ADOrganizationalUnit -OU "OU=test,DC=Netz-Weise,DC=DE"

      Tests the given OU-path and returns true, if the OU exists, else false.

      .LINK

      https://www.netz-weise-it.training/weisheiten/tipps/item/381-die-existenz-einer-ou-testen-mit-powershell.html

      The first link is opened by Get-Help -Online Test-ADOrganizationalUnit

      .INPUTS

      List of input types that are accepted by this function.

      .OUTPUTS

      List of output types produced by this function.

  #>

  [CmdletBinding()]

  param(

    [ValidateNotNullOrEmpty()]

    $OU

  )

  Try

  {

    IfGet-ADOrganizationalUnit -Identity $OU )

    {

      $true

    }

  }

  Catch

  {

    $false

  }

Der Aufruf der Funktion sieht dann so aus: 

Test-ADOrganizationalUnit -OU "OU=test,DC=Netz-Weise,DC=DE"

Verwandte Beiträge

Kommentare hinterlassen