Search code examples
powershellscriptingactive-directorywindows-server-2022

Powershell creating OU's


$DEPsOUs = @("A","B","C","D")
$createOUs = @('Users', 'Tester')
ForEach ($DEPOU In $DEPsOUs) {
$DEPOUDN = Get-ADOrganizationalUnit -Filter "Name -like '$DEPOU'" | select DistinguishedName | Format-Table -HideTableHeaders | Out-String
#write-host "$DEPOUDN" #checking if output is a string
    ForEach ($createOU IN $createOUs) {
        New-ADOrganizationalUnit -Name $createOU -Path $DEPOUDN
    }
  }

this is the script, I just created some test OU's inside active directory. the script works but I get some weird issues which I don't understand.

New-ADOrganizationalUnit : The object name has bad syntax
At line:7 char:9
+         New-ADOrganizationalUnit -Name $createOU -Path $DEPOUDN
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (OU=Users,
OU=A...,DC=local
:String) [New-ADOrganizationalUnit], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:8335,Microsoft.ActiveDirectory.Management.Commands.NewADOrganizationalUni 
   t
 
New-ADOrganizationalUnit : The object name has bad syntax
At line:7 char:9
+         New-ADOrganizationalUnit -Name $createOU -Path $DEPOUDN
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (OU=Tester,
OU=...,DC=local
:String) [New-ADOrganizationalUnit], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:8335,Microsoft.ActiveDirectory.Management.Commands.NewADOrganizationalUni 
   t
 
New-ADOrganizationalUnit : The object name has bad syntax
At line:7 char:9
+         New-ADOrganizationalUnit -Name $createOU -Path $DEPOUDN
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (OU=Users,
OU=B...,DC=local
:String) [New-ADOrganizationalUnit], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:8335,Microsoft.ActiveDirectory.Management.Commands.NewADOrganizationalUni 
   t
 
New-ADOrganizationalUnit : The object name has bad syntax
At line:7 char:9
+         New-ADOrganizationalUnit -Name $createOU -Path $DEPOUDN
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (OU=Tester,
OU=...,DC=local
:String) [New-ADOrganizationalUnit], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:8335,Microsoft.ActiveDirectory.Management.Commands.NewADOrganizationalUni 
   t
 
New-ADOrganizationalUnit : The object name has bad syntax
At line:7 char:9
+         New-ADOrganizationalUnit -Name $createOU -Path $DEPOUDN
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (OU=Users,
OU=C...,DC=local
:String) [New-ADOrganizationalUnit], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:8335,Microsoft.ActiveDirectory.Management.Commands.NewADOrganizationalUni 
   t
 
New-ADOrganizationalUnit : The object name has bad syntax
At line:7 char:9
+         New-ADOrganizationalUnit -Name $createOU -Path $DEPOUDN
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (OU=Tester,
OU=...,DC=local
:String) [New-ADOrganizationalUnit], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:8335,Microsoft.ActiveDirectory.Management.Commands.NewADOrganizationalUni 
   t
 
New-ADOrganizationalUnit : The object name has bad syntax
At line:7 char:9
+         New-ADOrganizationalUnit -Name $createOU -Path $DEPOUDN
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (OU=Users,
OU=D...,DC=local
:String) [New-ADOrganizationalUnit], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:8335,Microsoft.ActiveDirectory.Management.Commands.NewADOrganizationalUni 
   t
 
New-ADOrganizationalUnit : The object name has bad syntax
At line:7 char:9
+         New-ADOrganizationalUnit -Name $createOU -Path $DEPOUDN
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (OU=Tester,
OU=...,DC=local
:String) [New-ADOrganizationalUnit], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:8335,Microsoft.ActiveDirectory.Management.Commands.NewADOrganizationalUni 
   t

can somebody clarify what is going on ? it creates the OU's with success but this issue appeared.i lauched it in Powershell ISE

I tried a few thing by converting it to string but doesn't really make sense to me when my arrays are string arrays.


Solution

  • You just need to expand the DistinguishedName attribute instead of using Format-Table (meant only for console display) and Out-String:

    $DEPsOUs = @("A","B","C","D")
    $createOUs = @('Users', 'Tester')
    ForEach ($DEPOU In $DEPsOUs) {
        $DEPOUDN = (Get-ADOrganizationalUnit -Filter "Name -eq '$DEPOU'").DistinguishedName
        ForEach ($createOU IN $createOUs) {
            New-ADOrganizationalUnit -Name $createOU -Path $DEPOUDN
        }
    }