Impor Modul AD Powershell selama Urutan Tugas MDT

13

Saya telah menulis skrip PowerShell singkat ini untuk mengganti nama komputer sebagai bagian dari urutan tugas 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 

Ketika MDT menjalankan tugas ini, ia menjalankannya sebagai administrator lokal. Saya mendapatkan kesalahan berikut ketika mencoba memuat Modul AD.

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

Saya dapat mengimpor modul dengan baik setelah urutan tugas selesai dari mesin ketika login sebagai admin domain, tetapi tidak sebagai administrator mesin lokal. Apakah ada cara untuk menjalankan urutan tugas MDT sebagai administrator domain atau meningkatkan hak istimewa administrator lokal selama urutan tugas?

Terima kasih sebelumnya atas bantuan yang Anda berikan,

Mx

UPDATE: 10/13/2015

Saya memutuskan untuk menjauh dari menggunakan modul AD dalam skrip MDT saya dan tak lama setelah memposting ini dirancang cara lain untuk menyelesaikan ini. Hasil saya dengan modul AD tidak dapat diprediksi terbaik. Saya ingin mempostingnya di sini untuk anak cucu. Saya menambahkan ini ke folder State Restore> Custom Tasks sebagai "Jalankan Powershell Script" di urutan tugas MDT saya dan kemudian tambahkan tugas Restart Computer langsung di bawahnya. Sudah berfungsi seperti pesona pada penyebaran 1600+ klien tahun terakhir ini.

$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)
Mx Gorply
sumber
Bukankah Anda agak hilang $AdminPassworddi PSCredential ArgumentList?
Mathias R. Jessen
Permintaan maaf, itu ada dalam skrip aktual, tetapi harus dihilangkan dalam salin dan tempel.
Mx Gorply
Apakah Anda memiliki urutan tugas yang dijalankan CMDatau PowerShell? Jika Anda menjalankan powershell kemudian coba cmdperintah: powershell Juga saya akan memeriksa dan melihat apakah kotak powershell dicentang pada layar konfigurasi pembuatan boot.wim
Elliot Labs LLC
@ MXGorply Bisakah Anda mengonfirmasi: 1. bahwa skrip sedang dijalankan setelah Windows dimulai setelah OS menginstal seperti dalam fase Pemulihan Negara atau dalam fase sebelumnya di WinPE atau dalam OS yang di-refresh. 2. Sebelum langkah ini dijalankan, apakah Anda sudah menjalankan langkah bergabung / bergabung kembali dengan domain.
Bernie White
4
@ MXGorply Ah ok, jadi tidak ada masalah dengan eksekusi perintah? Peringatan itu karena ketika modul mengimpornya akan secara otomatis mencoba untuk mengikat menggunakan kredensial saat ini yang tidak valid, ini akan diharapkan. Jika perintah berjalan maka saya akan khawatir tentang peringatan sebelum Anda memberikan kredensial. Anda dapat menggunakan -WarningAction SilentlyContinueuntuk menekan pesan pada perintah modul impor.
Bernie White

Jawaban:

1

Ketika Anda tidak masuk sebagai pengguna domain, Anda perlu secara eksplisit instantiate PSDrive dan kemudian jalankan perintah * -AD * dari sana:

Import-Module ActiveDirectory -WarningAction SilentlyContinue
New-PSDrive -Name AD -PSProvider ActiveDirectory -Server <your DC> -Root //RootDSE/ -Credential $cred
Set-Location AD:
Nicolas Melay
sumber