Powershell: automatisches anlegen von OUs
Hallo zusammen,
weil ich häufiger OU- Strukturen mit gleichem Aufbau erstellen muss, möchte ich das mit einem Skript automatisieren.
Dazu habe ich wie folgt angefangen:
#Erstelle OU-Struktur
param
(
[Parameter (Mandatory=$true)][String]$GKZ,
[Parameter (Mandatory=$true)][String]$VWtyp,
[Parameter (Mandatory=$true)][String]$VWname
)
#Erstelle Basis-OU
Function Erstelle-BasisOU
{
param
(
[String]$GKZ,
[String]$VMtyp,
[String]$VMname,
)
#Bilde Namen
$OUname = $GKZ+"-"+$VWtyp+"-"+$VWname
#Erstelle OU nach Vorgaben in der Hauptebene
New-ADOrganizationalUnit -Name $OUname -Path "DC=scd-lab,DC=intern"
}
#warte 30 Sekunden, damit die neue OU erkannt wird
Start-Sleep -Seconds 30
#Erstelle Unter-OU
Function Erstelle-UnterOU
{
#Bilde Namen
$UnterOUname = $GKZ+"-Benutzer"
#Erstelle Unter-OU innerhalb der Basis-OU
New-ADOrganizationalUnit -Name $UnterOUname -Path "OU=$OUname,DC=scd-lab,DC=intern"
}
Erstelle-BasisOU -GKZ $GKZ -VWtyp $VWtyp -VWname $VWname
Erstelle-UnterOU
Das Problem: der Teil mit der Unter-OU funktioniert nicht. Wenn ich das Skript durchlaufen lasse, wird die erste Funktion korrekt ausgeführt, Eine OU wird angelegt und der Wert der Variablen $GKZ, $VWname und $VWtyp kann abgefragt werden. die Variable $OUname ist danach hingegen leer, was ich komisch finde. Deswegen kann die zweite Funktion nicht ausgeführt werden. Ich glaube, dass ich einen Syntaxfehler in der fett markierten Zeile habe...
Kann mir da wer helfen?
Gruß Jannik
weil ich häufiger OU- Strukturen mit gleichem Aufbau erstellen muss, möchte ich das mit einem Skript automatisieren.
Dazu habe ich wie folgt angefangen:
#Erstelle OU-Struktur
param
(
[Parameter (Mandatory=$true)][String]$GKZ,
[Parameter (Mandatory=$true)][String]$VWtyp,
[Parameter (Mandatory=$true)][String]$VWname
)
#Erstelle Basis-OU
Function Erstelle-BasisOU
{
param
(
[String]$GKZ,
[String]$VMtyp,
[String]$VMname,
)
#Bilde Namen
$OUname = $GKZ+"-"+$VWtyp+"-"+$VWname
#Erstelle OU nach Vorgaben in der Hauptebene
New-ADOrganizationalUnit -Name $OUname -Path "DC=scd-lab,DC=intern"
}
#warte 30 Sekunden, damit die neue OU erkannt wird
Start-Sleep -Seconds 30
#Erstelle Unter-OU
Function Erstelle-UnterOU
{
#Bilde Namen
$UnterOUname = $GKZ+"-Benutzer"
#Erstelle Unter-OU innerhalb der Basis-OU
New-ADOrganizationalUnit -Name $UnterOUname -Path "OU=$OUname,DC=scd-lab,DC=intern"
}
Erstelle-BasisOU -GKZ $GKZ -VWtyp $VWtyp -VWname $VWname
Erstelle-UnterOU
Das Problem: der Teil mit der Unter-OU funktioniert nicht. Wenn ich das Skript durchlaufen lasse, wird die erste Funktion korrekt ausgeführt, Eine OU wird angelegt und der Wert der Variablen $GKZ, $VWname und $VWtyp kann abgefragt werden. die Variable $OUname ist danach hingegen leer, was ich komisch finde. Deswegen kann die zweite Funktion nicht ausgeführt werden. Ich glaube, dass ich einen Syntaxfehler in der fett markierten Zeile habe...
Kann mir da wer helfen?
Gruß Jannik
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1267864486
Url: https://administrator.de/contentid/1267864486
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
6 Kommentare
Neuester Kommentar
Hi,
deine definierten Variablen sind immer nur in der Funktion selbst bekannt (eigentlich nutzt man u.A. deshalb Funktionen)
Du musst den Inhalt der Variable "$OUName" global für alle anderen Funktionen verfügbar machen:
deine definierten Variablen sind immer nur in der Funktion selbst bekannt (eigentlich nutzt man u.A. deshalb Funktionen)
Du musst den Inhalt der Variable "$OUName" global für alle anderen Funktionen verfügbar machen:
#Bilde Namen
$OUname = $GKZ+"-"+$VWtyp+"-"+$VWname
#Erstelle OU nach Vorgaben in der Hauptebene
New-ADOrganizationalUnit -Name $OUname -Path "DC=scd-lab,DC=intern"
return $OUname
}
Moin,
verwende doch bitte code-tags, dann wird's lesbarer.
Und dann musst du dich auch mal endscheiden ob VM oder VW
In der Funktion Erstelle-UnterOU ist $OUname nicht definiert und wird auch nicht übergeben, hat also keinen Inhalt
lg,
Slainte
verwende doch bitte code-tags, dann wird's lesbarer.
Und dann musst du dich auch mal endscheiden ob VM oder VW
(
[String]$GKZ,
[String]$VMtyp,
[String]$VMname,
)
#Bilde Namen
$OUname = $GKZ+"-"+$VWtyp+"-"+$VWname
In der Funktion Erstelle-UnterOU ist $OUname nicht definiert und wird auch nicht übergeben, hat also keinen Inhalt
lg,
Slainte