在MDT任务序列中导入Powershell AD模块


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运行此任务时,它将以本地管理员身份运行。尝试加载AD模块时出现以下错误。

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

以域管理员(而不是计算机的本地管理员)身份登录后,我可以在计算机上完成任务序列后很好地导入模块。有什么方法可以在域管理员身份下以域管理员身份运行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)

你是不是有点缺少$AdminPassword的PSCredential的参数列表?
Mathias R. Jessen 2014年

抱歉,它在实际脚本中,但是必须在复制和粘贴中省略。
Mx Gorply 2014年

您是否正在执行任务序列CMDPowerShell?如果您正在执行powershell,请尝试执行以下cmd命令:powershell 另外,我还将检查boot.wim构建配置屏幕上是否选中了powershell框
Elliot Labs LLC

@MxGorply是否可以确认:1. Windows安装操作系统启动后,正在执行脚本,例如在状态还原阶段,还是在WinPE的早期阶段或刷新的操作系统中。2.在运行此步骤之前,您是否已执行加入/重新加入域步骤。
伯尼·怀特

4
@MxGorply嗯,那么命令执行没有问题吗?警告是因为导入模块时,它将自动尝试使用无效的当前凭据进行绑定,这是可以预期的。如果命令正在运行,那么在您提供凭据之前我会担心该警告。您可以-WarningAction SilentlyContinue用来禁止导入模块命令上的消息。
伯尼·怀特

Answers:


1

当您未以域用户身份登录时,需要显式实例化PSDrive,然后从那里运行* -AD *命令:

Import-Module ActiveDirectory -WarningAction SilentlyContinue
New-PSDrive -Name AD -PSProvider ActiveDirectory -Server <your DC> -Root //RootDSE/ -Credential $cred
Set-Location AD:
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.