Импорт модуля PowerShell AD во время последовательности задач 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 выполняет эту задачу, он запускает ее как локальный администратор. Я получаю следующую ошибку при попытке загрузить модуль AD.

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

Я могу хорошо импортировать модуль после того, как последовательность задач закончится с компьютера, когда вы вошли в систему как администратор домена, но не как локальный администратор машины. Есть ли способ запустить последовательность задач MDT в качестве администратора домена или повысить привилегии локального администратора во время последовательности задач?

Заранее благодарим за любую помощь, которую вы можете предоставить,

Mx

ОБНОВЛЕНИЕ: 13.10.2015

Я решил отойти от использования модуля AD в своем сценарии MDT и вскоре после публикации разработал еще один способ сделать это. Мои результаты с модулем 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)

Вы не пропали $AdminPasswordв PSCredential ArgumentList?
Матиас Р. Джессен

Извините, это в реальном сценарии, но должно быть опущено в копировании и вставке.
Mx Gorply

У вас выполняется последовательность задач CMDили PowerShell? Если вы выполняете powershell, то попробуйте cmdкоманду: powershell Также я бы проверил и проверил, установлен ли флажок powershell на экране конфигурации сборки boot.wim
Elliot Labs LLC

@MxGorply Можете ли вы подтвердить: 1. что сценарий выполняется после запуска Windows после установки ОС, как на этапе восстановления состояния, или находится на более ранней стадии в WinPE или в обновлении ОС. 2. Перед выполнением этого шага вы уже выполнили шаг присоединения к домену.
Берни Уайт

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:
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.