Importe o módulo AD Powershell durante a sequência de tarefas do MDT

13

Escrevi este script curto de powershell para renomear um computador como parte de uma sequência de tarefas 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 o 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.'.

Eu posso importar o módulo muito bem depois que a sequência de tarefas acabou da máquina quando logado como um administrador de domínio, mas não como o administrador local da máquina. Existe alguma maneira de executar a sequência de tarefas do MDT como um 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ê possa fornecer,

Mx

ATUALIZAÇÃO: 13/10/2015

Eu decidi me afastar do uso do módulo AD em meu script do MDT e logo após postar isso, criei outra maneira de fazer isso. Meus resultados com o módulo AD foram imprevisíveis na melhor das hipóteses. Eu queria postar aqui para a posteridade. Eu adiciono isso ao State Restore > Pasta Tarefas personalizadas como "Executar o script Powershell" na sequência de tarefas do MDT e, em seguida, adicione uma tarefa Reiniciar computador diretamente abaixo dela. Está funcionando como um charme 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)
    
por Mx Gorply 10.10.2014 / 16:38

1 resposta

1

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

Import-Module ActiveDirectory -WarningAction SilentlyContinue
New-PSDrive -Name AD -PSProvider ActiveDirectory -Server <your DC> -Root //RootDSE/ -Credential $cred
Set-Location AD:
    
por 13.08.2016 / 00:23