我编写了这个简短的 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 运行此任务时,会以本地管理员身份运行。当它尝试加载 AD 模块时,我收到以下错误。
Warning: Error initializing default drive: 'The server has rejected the client credentials.'.
任务序列结束后,我以域管理员身份登录时可以从计算机导入模块,但不能以计算机的本地管理员身份登录。有没有办法以域管理员身份运行 MDT 任务序列或在任务序列期间提升本地管理员的权限?
在此先感谢您提供的任何帮助,
麦克
更新:2015 年 10 月 13 日
我决定不再使用 MDT 脚本中的 AD 模块,在发布此文后不久,我设计了另一种方法来完成此操作。使用 AD 模块的结果充其量是不可预测的。我想将其发布在这里以供后人参考。我将其作为“运行 Powershell 脚本”添加到 MDT 任务序列中的“状态恢复”>“自定义任务”文件夹中,然后在其下方直接添加“重新启动计算机”任务。在过去的一年里,它在 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)
答案1
当您未以域用户身份登录时,您需要明确实例化 PSDrive,然后从那里运行 *-AD* 命令:
Import-Module ActiveDirectory -WarningAction SilentlyContinue
New-PSDrive -Name AD -PSProvider ActiveDirectory -Server <your DC> -Root //RootDSE/ -Credential $cred
Set-Location AD: