Mx *_*ply 14 powershell active-directory mdt
我编写了这个简短的 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
Run Code Online (Sandbox Code Playgroud)
当 MDT 运行此任务时,它以本地管理员身份运行它。尝试加载 AD 模块时出现以下错误。
Warning: Error initializing default drive: 'The server has rejected the client credentials.'.
Run Code Online (Sandbox Code Playgroud)
当以域管理员身份登录时,我可以在任务序列结束后从机器导入模块,但不能以机器的本地管理员身份登录。有没有办法以域管理员身份运行MDT任务序列或者在任务序列期间提升本地管理员的权限?
预先感谢您提供的任何帮助,
MX
更新:10/13/2015
我决定不再在我的 MDT 脚本中使用 AD 模块,并在发布此内容后不久设计了另一种完成此操作的方法。我使用 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)
Run Code Online (Sandbox Code Playgroud)
当您没有以域用户身份登录时,您需要显式实例化 PSDrive,然后从那里运行 *-AD* 命令:
Import-Module ActiveDirectory -WarningAction SilentlyContinue
New-PSDrive -Name AD -PSProvider ActiveDirectory -Server <your DC> -Root //RootDSE/ -Credential $cred
Set-Location AD:
Run Code Online (Sandbox Code Playgroud)