Gezielter AD-Join mit Powershell Skript

Allgemeine Informationen

Dieses PowerShell-Skript ermöglicht es, einen Computer automatisch umzubenennen und anschließend einer spezifischen Active Directory-Domäne beizutreten. Zusätzlich wird der Computer in eine vorgegebene Organizational Unit (OU) verschoben. Standardmäßig führt das Skript nach diesen Änderungen einen Neustart durch, um sicherzustellen, dass alle Anpassungen wirksam werden.

Skript

# Funktion zur Überprüfung, ob das Skript als Administrator ausgeführt wird
function Ensure-RunAsAdministrator {
    $currentUser = [Security.Principal.WindowsIdentity]::GetCurrent()
    $isAdmin = (New-Object Security.Principal.WindowsPrincipal($currentUser)).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

    if (-not $isAdmin) {
        Write-Host "Das Skript wird nicht als Administrator ausgeführt. Starte das Skript als Administrator neu."
        Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
        exit
    }
}

# Funktion zur Überprüfung der Windows-Edition (muss mindestens "Pro" oder höher sein)
function Check-WindowsEdition {
    $edition = (Get-WmiObject -Class Win32_OperatingSystem).OperatingSystemSKU

    # Windows Pro und höher haben die folgenden SKU-Codes: 48 = Pro, 49 = Pro N, 50 = Enterprise, 51 = Education, etc.
    $allowedEditions = @(48, 49, 50, 51)

    if ($allowedEditions -notcontains $edition) {
        Write-Host "Das Betriebssystem unterstützt keinen Beitritt zur Domäne. Es wird mindestens Windows Pro oder eine höhere Version benötigt."
        pause
        exit
    } else {
        Write-Host "Das Betriebssystem unterstützt den Beitritt zur Domäne."
    }
}

# Admin-Rechte sicherstellen
Ensure-RunAsAdministrator

# Überprüfen, ob die Windows-Edition "Pro" oder höher ist
Check-WindowsEdition

# Variablen definieren
$domäne = "DeineDomäne.local"  # Hier die Domäne eintragen
$Benutzername = "DomänenBenutzer"  # Hier den Domänenbenutzernamen eintragen
$Passwort = "DomänenPasswort"  # Hier das Domänenpasswort eintragen
$ou = "OU=Computer,OU=Standort,DC=DeineDomäne,DC=local"  # Hier die gewünschte OU eintragen
$AdminBenutzer = "$domäne\$Benutzername"
$neuerComputername = Read-Host "Bitte geben Sie den neuen Computernamen ein"

# Funktion zum Join in die Domäne mit spezieller OU und ohne Neustart
function Join-ComputerToDomain {
    $securePassword = ConvertTo-SecureString $Passwort -AsPlainText -Force
    $credentials = New-Object System.Management.Automation.PSCredential($AdminBenutzer, $securePassword)
      
    Add-Computer -DomainName $domäne -NewName $neuerComputername -Credential $credentials -OUPath $ou -PassThru -Force | Out-Null
    Write-Host "Der Computer wurde in die Domäne $domäne in die OU $ou aufgenommen"
}

# Funktion um Benutzer nach Neustart zu fragen (Standard ist Neustart)
function Prompt-Restart {
    $response = Read-Host "Möchten Sie den Neustart abbrechen? (nein/ja) [nein]"
      
    if ($response -eq "ja") {
        Write-Host "Neustart wurde abgebrochen. Änderungen werden nach einem manuellen Neustart aktiv."
    } else {
        Write-Host "Der Computer wird jetzt neu gestartet..."
        Restart-Computer -Force
    }
}

# Ausführen
# Computer zur Domäne hinzufügen
Join-ComputerToDomain

# Benutzer nach Neustart fragen (Standard ist Neustart)
Prompt-Restart

Skript ausführen

Schritt 1: PowerShell-Skript herunterladen und anpassen

  1. Erstelle das Skript lokal auf deinem Rechner.
  2. Öffne das Skript in einem Texteditor (z. B. Notepad, Visual Studio Code) und passe die folgenden Variablen entsprechend deinen Anforderungen an:
  • $domäne: Hier den Namen deiner Domäne eintragen (z. B. DeineDomäne.local).
  • $Benutzername: Der Benutzername eines Domänenadministrators.
  • $Passwort: Das Passwort des Domänenadministrators (Achtung: Verwende starke Passwörter!).
  • $ou: Die Organisationseinheit (OU), in der die Computer hinzugefügt werden sollen.

Speichere die Änderungen ab, sobald du alle Variablen angepasst hast.

Schritt 2: PowerShell ausführen

Öffne die CMD als Administrator und gebe folgenden Befehl ein.

powershell.exe -ExecutionPolicy Bypass -File C:\Pfad\Zu\Deinem\Skript.ps1