He escrito este breve script de PowerShell para cambiar el nombre de una computadora como parte de una secuencia de tareas 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
Cuando MDT ejecuta esta tarea, la ejecuta como administrador local. Recibo el siguiente error cuando intenta cargar el módulo AD.
Warning: Error initializing default drive: 'The server has rejected the client credentials.'.
Puedo importar el módulo muy bien después de que la secuencia de tareas termine desde la máquina cuando inicie sesión como administrador de dominio, pero no como administrador local de la máquina. ¿Hay alguna forma de ejecutar la secuencia de tareas MDT como administrador de dominio o elevar los privilegios del administrador local durante la secuencia de tareas?
Gracias de antemano por cualquier ayuda que pueda brindar,
Mx
ACTUALIZACIÓN: 13/10/2015
Decidí dejar de usar el módulo AD dentro de mi script MDT y, poco después de publicar esto, ideé otra forma de hacerlo. Mis resultados con el módulo AD fueron impredecibles en el mejor de los casos. Quería publicarlo aquí para la posteridad. Agrego esto a la carpeta Restaurar estado> Tareas personalizadas como "Ejecutar secuencia de comandos Powershell" en mi secuencia de tareas MDT y luego agrego una tarea Reiniciar equipo directamente debajo de ella. Ha funcionado a las mil maravillas en una implementación de más de 1600 clientes el año pasado.
$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)
fuente
$AdminPassword
en la lista de argumentos de PSCredential?CMD
oPowerShell
? Si está ejecutando PowerShell, intente elcmd
comando:powershell
También verificaría y vería si la casilla PowerShell está marcada en la pantalla de configuración de compilación boot.wim-WarningAction SilentlyContinue
para suprimir el mensaje en el comando import-module.Respuestas:
Cuando no haya iniciado sesión como usuario de dominio, debe crear una instancia explícita de un PSDrive y luego ejecutar comandos * -AD * desde allí:
fuente