Importar o módulo do PowerShell AD durante a sequência de tarefas MDT

13

Eu escrevi este pequeno script do PowerShell para renomear um computador como parte de uma sequência de tarefas do 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 

Quando o MDT executa essa tarefa, ele é executado como administrador local. Eu recebo o seguinte erro quando ele tenta carregar o módulo AD.

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

Posso importar o módulo muito bem após o término da sequência de tarefas da máquina quando conectado como administrador de domínio, mas não como administrador local da máquina. Existe alguma maneira de executar a sequência de tarefas MDT como administrador de domínio ou elevar os privilégios do administrador local durante a sequência de tarefas?

Agradecemos antecipadamente por qualquer ajuda que você pode proporcionar,

Mx

ATUALIZAÇÃO: 13/10/2015

Decidi deixar de usar o módulo AD no meu script MDT e, pouco depois de postar isso, criei outra maneira de fazer isso. Meus resultados com o módulo AD eram imprevisíveis na melhor das hipóteses. Eu queria publicá-lo aqui para a posteridade. Eu adiciono isso à pasta Restauração do Estado> Tarefas Personalizadas como um "Executar Script do Power Powershell" na minha sequência de tarefas do MDT e, em seguida, adiciono uma tarefa Reiniciar Computador diretamente abaixo dela. Ele tem funcionado como um encanto em uma implantação de mais de 1600 clientes no ano passado.

$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)
Mx Gorply
fonte
Você não está meio ausente $AdminPasswordno PSCredential ArgumentList?
Mathias R. Jessen 10/10
Desculpas, está no script real, mas deve ter sido omitido na cópia e colagem.
Mx Gorply
Você tem a sequência de tarefas em execução CMDou PowerShell? Se você estiver executando o PowerShell, tente o cmdcomando: powershell Também eu verificaria se a caixa do PowerShell está marcada na tela de configuração do boot.wim build
Elliot Labs LLC
@MxGorply Você pode confirmar: 1. que o script está sendo executado após a inicialização do Windows após a instalação do SO, como em uma fase de Restauração de Estado ou está em uma fase anterior no WinPE ou em um SO sendo atualizado. 2. Antes desta etapa ser executada, você já executou uma etapa de ingresso / ingresso no domínio.
Bernie White
4
@MxGorply Ah ok, então não há problema com a execução dos comandos? O aviso ocorre porque, quando o módulo importa, ele tenta automaticamente ligar usando as credenciais atuais que não são válidas, isso seria esperado. Se os comandos estiverem em execução, eu me preocuparia com o aviso antes de você fornecer credenciais. Você pode usar -WarningAction SilentlyContinuepara suprimir a mensagem no comando import-module.
Bernie White

Respostas:

1

Quando você não está conectado como usuário de domínio, é necessário instanciar explicitamente um PSDrive e executar os comandos * -AD * a partir daí:

Import-Module ActiveDirectory -WarningAction SilentlyContinue
New-PSDrive -Name AD -PSProvider ActiveDirectory -Server <your DC> -Root //RootDSE/ -Credential $cred
Set-Location AD:
Nicolas Melay
fonte