Zaimportuj moduł AD PowerShell podczas sekwencji zadań MDT


13

Napisałem ten krótki skrypt programu PowerShell, aby zmienić nazwę komputera w ramach sekwencji zadań MDT:

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 

Kiedy MDT uruchamia to zadanie, uruchamia je jako administrator lokalny. Podczas próby załadowania modułu AD pojawia się następujący błąd.

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

Mogę zaimportować moduł po zakończeniu sekwencji zadań z komputera po zalogowaniu jako administrator domeny, ale nie jako lokalny administrator komputera. Czy jest jakiś sposób na uruchomienie sekwencji zadań MDT jako administrator domeny lub podniesienie uprawnień lokalnego administratora podczas sekwencji zadań?

Z góry dziękuję za wszelką możliwą pomoc,

Mx

AKTUALIZACJA: 10/13/2015

Postanowiłem zrezygnować z korzystania z modułu AD w moim skrypcie MDT i wkrótce po opublikowaniu tego opracowałem inny sposób wykonania tego. Moje wyniki z modułem AD były co najwyżej nieprzewidywalne. Chciałem opublikować go tutaj dla potomności. Dodaję to do folderu Przywracanie stanu> Niestandardowe zadania jako „Uruchom skrypt Powershell” w mojej sekwencji zadań MDT, a następnie dodaj poniżej zadanie Uruchom ponownie komputer. W ubiegłym roku działało to jak urok na wdrożeniu ponad 1600 klientów.

$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)

Nie brakuje ci trochę $AdminPasswordna liście argumentów PSCredential?
Mathias R. Jessen

Przepraszam, jest w rzeczywistym skrypcie, ale musiał zostać pominięty w kopiowaniu i wklejaniu.
Mx Gorply,

Czy wykonujesz sekwencję zadań CMDlub PowerShell? Jeśli wykonujesz PowerShell, spróbuj wykonać cmdpolecenie: powershell Również sprawdziłbym, czy pole PowerShell jest zaznaczone na ekranie konfiguracji kompilacji boot.wim
Elliot Labs LLC,

@MxGorply Czy możesz potwierdzić: 1. że skrypt jest wykonywany po uruchomieniu systemu Windows po instalacji systemu operacyjnego, tak jak w fazie przywracania stanu, lub czy jest on we wcześniejszej fazie w WinPE lub podczas odświeżania systemu operacyjnego. 2. Przed uruchomieniem tego kroku wykonaj już krok przyłączenia / ponownego przyłączenia do domeny.
Bernie White

4
@MxGorply Ah ok, więc nie ma problemu z wykonywaniem poleceń? Ostrzeżenie jest takie, ponieważ podczas importu modułu będzie on automatycznie próbował powiązać przy użyciu bieżących poświadczeń, które są niepoprawne, można się tego spodziewać. Jeśli polecenia są uruchomione, martwiłbym się tym ostrzeżeniem przed podaniem poświadczeń. Możesz użyć, -WarningAction SilentlyContinueaby ukryć komunikat w poleceniu import-module.
Bernie White,

Odpowiedzi:


1

Jeśli nie jesteś zalogowany jako użytkownik domeny, musisz jawnie utworzyć instancję PSDrive, a następnie uruchomić z niej polecenia * -AD *:

Import-Module ActiveDirectory -WarningAction SilentlyContinue
New-PSDrive -Name AD -PSProvider ActiveDirectory -Server <your DC> -Root //RootDSE/ -Credential $cred
Set-Location AD:
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.