นำเข้าโมดูลโฆษณา Powershell ในระหว่างงานลำดับ MDT


13

ฉันได้เขียนสคริปต์ PowerShell สั้น ๆ นี้เพื่อเปลี่ยนชื่อคอมพิวเตอร์เป็นส่วนหนึ่งของลำดับงาน 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 

เมื่อ MDT รันงานนี้มันจะทำงานเป็นผู้ดูแลระบบโลคัล ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายามโหลดโมดูลโฆษณา

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

ฉันสามารถนำเข้าโมดูลได้ดีหลังจากลำดับงานสิ้นสุดลงจากเครื่องเมื่อลงชื่อเข้าใช้ในฐานะผู้ดูแลโดเมน แต่ไม่ได้เป็นผู้ดูแลระบบภายในเครื่อง มีวิธีใดบ้างที่จะเรียกใช้งานลำดับ MDT ในฐานะผู้ดูแลระบบโดเมนหรือยกระดับสิทธิ์ของผู้ดูแลระบบภายในระหว่างลำดับงาน

ขอบคุณล่วงหน้าสำหรับความช่วยเหลือที่คุณสามารถให้ได้

mx

อัปเดต: 10/13/2015

ฉันตัดสินใจที่จะย้ายออกจากการใช้โมดูลโฆษณาภายในสคริปต์ MDT ของฉันและไม่นานหลังจากที่โพสต์สิ่งนี้ได้คิดวิธีอื่นในการทำให้เสร็จ ผลลัพธ์ของฉันกับโมดูลโฆษณานั้นคาดเดาไม่ได้อย่างดีที่สุด ฉันต้องการโพสต์ไว้ที่นี่เพื่อลูกหลาน ฉันเพิ่มสิ่งนี้ลงในโฟลเดอร์ State Restore> Custom Tasks เป็น "Run Powershell Script" ในลำดับงาน MDT ของฉันแล้วเพิ่มงาน Restart Computer โดยตรงภายใต้ มันทำงานได้อย่างมีเสน่ห์ในการปรับใช้ไคลเอนต์กว่า 1600 รายการในปีที่ผ่านมา

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

คุณไม่หายไป$AdminPasswordจากรายการอาร์กิวเมนต์ PSCredential หรือไม่
Mathias R. Jessen

ขออภัยมันอยู่ในสคริปต์จริง แต่ต้องถูกละเว้นในการคัดลอกและวาง
Mx Gorply

คุณมีลำดับงานที่ดำเนินการCMDหรือPowerShellไม่? หากคุณกำลังใช้งาน PowerShell ให้ลองใช้cmdคำสั่ง: powershell นอกจากนี้ฉันจะตรวจสอบและดูว่ามีการทำเครื่องหมายในช่อง PowerShell บนหน้าจอการกำหนดค่า boot.wim หรือไม่
Elliot Labs LLC

@MxGorply คุณสามารถยืนยันได้: 1. สคริปต์กำลังถูกเรียกใช้งานหลังจาก Windows เริ่มต้นหลังจากการติดตั้งระบบปฏิบัติการเช่นในสถานะการคืนค่าหรืออยู่ในช่วงก่อนหน้านี้ใน WinPE หรือในระบบปฏิบัติการที่กำลังรีเฟรช 2. ก่อนที่จะรันขั้นตอนนี้คุณได้ดำเนินการขั้นตอนการเข้าร่วม / เข้าร่วมโดเมนแล้ว
Bernie White

4
@MxGorply อาตกลงแล้วไม่มีปัญหากับการใช้คำสั่งเหรอ? คำเตือนเป็นเพราะเมื่อโมดูลนำเข้ามันจะพยายามผูกโดยอัตโนมัติโดยใช้ข้อมูลประจำตัวปัจจุบันซึ่งไม่ถูกต้องสิ่งนี้จะเกิดขึ้น หากคำสั่งทำงานแล้วฉันจะกังวลเกี่ยวกับคำเตือนก่อนที่คุณจะให้ข้อมูลประจำตัว คุณสามารถใช้-WarningAction SilentlyContinueเพื่อแทนที่ข้อความในคำสั่ง import-module
เบอร์นีไวท์

คำตอบ:


1

เมื่อคุณไม่ได้เข้าสู่ระบบในฐานะผู้ใช้โดเมนคุณจะต้องยกตัวอย่าง PSDrive ให้ชัดเจนจากนั้นเรียกใช้คำสั่ง * -AD * จากที่นั่น:

Import-Module ActiveDirectory -WarningAction SilentlyContinue
New-PSDrive -Name AD -PSProvider ActiveDirectory -Server <your DC> -Root //RootDSE/ -Credential $cred
Set-Location AD:
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.