Importieren Sie das Powershell AD-Modul während der MDT-Tasksequenz


13

Ich habe dieses kurze Powershell-Skript geschrieben, um einen Computer als Teil einer MDT-Tasksequenz umzubenennen:

Import-Module ActiveDirectory

$AdminUsername = 'domain.com\administrator'
$AdminPassword = 'password' | ConvertTo-SecureString -asPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList $AdminUsername, $AdminPassword              

$Domain = Get-ADDomainController DomainName domain.com -Discover -NextClosestSite
$Site = $Domain.Site
$DomainComputer = Get-WmiObject Win32_BIOS 
$Serial = $DomainComputer.SerialNumber
$Computername = $Site + "-" + $Serial

Rename-Computer -NewName $Computername -DomainCredential $cred 

Wenn MDT diesen Task ausführt, wird er als lokaler Administrator ausgeführt. Beim Versuch, das AD-Modul zu laden, wird die folgende Fehlermeldung angezeigt.

Warning: Error initializing default drive:  'The server has rejected the client credentials.'.

Ich kann das Modul problemlos importieren, nachdem die Tasksequenz vom Computer beendet wurde, wenn ich als Domänenadministrator angemeldet bin, aber nicht als lokaler Administrator des Computers. Gibt es eine Möglichkeit, die MDT-Tasksequenz als Domänenadministrator auszuführen oder die Berechtigungen des lokalen Administrators während der Tasksequenz zu erhöhen?

Vielen Dank im Voraus für jede Hilfe, die Sie leisten können,

Mx

UPDATE: 13.10.2015

Ich habe mich entschieden, das AD-Modul nicht mehr in meinem MDT-Skript zu verwenden, und kurz nachdem ich dies gepostet habe, habe ich einen anderen Weg gefunden, dies zu erreichen. Meine Ergebnisse mit dem AD-Modul waren bestenfalls unvorhersehbar. Ich wollte es hier für die Nachwelt posten. Ich füge dies dem Ordner "State Restore> Custom Tasks" als "Run Powershell Script" in meiner MDT-Tasksequenz hinzu und füge dann eine Task "Restart Computer" direkt darunter hinzu. Es hat im vergangenen Jahr bei einer Clientbereitstellung über 1600 wie ein Zauber gewirkt.

$type = [System.DirectoryServices.ActiveDirectory.DirectoryContextType]"Domain"
$context = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext($type, "yourdomain.edu", "domainadmin", "yourpasswordhere")
$domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($context)
$DC = $domain.FindDomainController().Name
$Prefix = $DC.Substring(0,5)
$DomainComputer = Get-WmiObject Win32_BIOS 
$Serial = $DomainComputer.SerialNumber
$Computername = $Prefix + "-" + $Serial
$Password = "yourpasswordhere"
$Username = "yourdomain.edu\domainadmin"
$Computer = Get-WmiObject Win32_ComputerSystem
$Computer.Rename($Computername,$Password,$Username)

$AdminPasswordFehlt ihr nicht irgendwie in der PSCredential ArgumentList?
Mathias R. Jessen

Entschuldigung, es ist im eigentlichen Skript, muss aber beim Kopieren und Einfügen weggelassen worden sein.
Mx Gorply

Haben Sie die Tasksequenz ausgeführt CMDoder PowerShell? Wenn Sie Powershell ausführen, versuchen Sie den folgenden cmdBefehl: powershell Außerdem würde ich überprüfen, ob das Powershell-Kontrollkästchen auf dem Startbildschirm für die Konfiguration von WIM-Builds aktiviert ist
Elliot Labs LLC,

@MxGorply Können Sie bestätigen, dass: 1. das Skript ausgeführt wird, nachdem Windows nach der Installation des Betriebssystems wie in einer Statuswiederherstellungsphase gestartet wurde, oder in einer früheren Phase in WinPE oder in einem Betriebssystem, das aktualisiert wird. 2. Haben Sie vor dem Ausführen dieses Schritts bereits einen Domänenbeitrittsschritt ausgeführt?
Bernie White

4
@MxGorply Ah ok, also gibt es kein Problem mit der Ausführung der Befehle? Die Warnung liegt daran, dass das Modul beim Importieren automatisch versucht, eine Bindung mit den aktuellen, nicht gültigen Anmeldeinformationen herzustellen. Dies ist zu erwarten. Wenn die Befehle ausgeführt werden, würde ich mich über die Warnung Gedanken machen, bevor Sie Anmeldeinformationen angegeben haben. Mit können -WarningAction SilentlyContinueSie die Nachricht im Befehl import-module unterdrücken.
Bernie White

Antworten:


1

Wenn Sie nicht als Domänenbenutzer angemeldet sind, müssen Sie ein PSDrive explizit instanziieren und von dort aus die Befehle * -AD * ausführen:

Import-Module ActiveDirectory -WarningAction SilentlyContinue
New-PSDrive -Name AD -PSProvider ActiveDirectory -Server <your DC> -Root //RootDSE/ -Credential $cred
Set-Location AD:
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.