我已经写了这个简短的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运行这个任务时,它以本地pipe理员身份运行。 当它尝试加载AD模块时出现以下错误。
Warning: Error initializing default drive: 'The server has rejected the client credentials.'.
当以域pipe理员身份login时,我可以在任务序列结束后导入模块,但不能以机器的本地pipe理员身份login。 是否有任何方法作为域pipe理员运行MDT任务序列或在任务序列期间提升本地pipe理员的权限?
提前感谢您提供的任何帮助,
MX
更新:10/13/2015
我决定放弃在我的MDT脚本中使用AD模块,并在发布之后不久就devise出了另一种完成此方法的方法。 AD模块的结果最好是不可预测的。 我想在这里张贴为后人。 我将其添加到状态恢复>自定义任务文件夹中作为我的MDT任务序列中的“运行Powershell脚本”,然后直接在其下面添加一个重新启动计算机任务。 在过去的一年里,它已经在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)
当你没有以域用户身份login时,你需要显式实例化一个PSDrive,然后从那里运行* -AD *命令:
Import-Module ActiveDirectory -WarningAction SilentlyContinue New-PSDrive -Name AD -PSProvider ActiveDirectory -Server <your DC> -Root //RootDSE/ -Credential $cred Set-Location AD: