Flash info

"Si vous vivez chaque jour comme si c'était le dernier, un jour vous aurez probablement raison."

Steve Jobs (1955-2011)

 
Accueil arrow Bibliothèque de scripts arrow Active Directory arrow Créer un compte d'ordinateur PXE enabled
Créer un compte d'ordinateur PXE enabled
Écrit par Arnaud Petitjean [MVP]   
01-10-2009

Suite à la demande insistante de mon cher collègue Christian, alias "deployement man", qui pense que PowerShell est la solution magique à tous ses problèmes (là je le charrie...Wink) voici un petit script qui va lui faire plaisir et lui donner raison...

La problématique du jour est que pour déployer les OS des PC à distance (Zéro Touch Installation ça vous dit quelque chose ?) avec SMS ou SCCM 2007 lorsque l'on créé le compte d'ordinateur il faut aller modifier à la main certains attributs du compte dans l'onglet installation à distance comme ci-dessous :

onglet_pxe.png 

 Ainsi avec ces attributs renseignés la machine déployée sera automatiquement rentrée dans le domaine et nous garantirons le bon nommage de la présente machine.

Voilà le script :

#################################################################################################
#  www.powershell-scripting.com
#
#  New-Computer - v1.1
#
#  objectif : Créer un compte d'ordinateur avec la possibilité de passer en paramètres
#             les attributs correspondants au GUID de la machine et le serveur PXE
#
#  exemple d'utilisation:
#
# PS > ./New-Computer.ps1 -Name machine -netbootServer PXE_SRV -netbootGUID 564DC5C5-F474-1D83-9F1C-C16FEA324DEF
#
#################################################################################################
param(
   $name=$(throw 'Vous devez spécifier un nom de machine !'),
   $netbootServer='DEFAULT_PXE_SRV',
   $netbootGUID=$(throw 'Vous devez spécifier un GUID !')
)
  
[byte[]]$netbootGUID = ([guid]$netbootGUID).ToByteArray()

$ou = [ADSI]"LDAP://CN=Computers,$(([ADSI]'').distinguishedname)"
$computer = $ou.psbase.children.add("CN=$name",'computer')
$computer.psbase.invokeset('netbootGUID',$netbootGUID)
$computer.psbase.invokeset('netbootMachineFilePath',$netbootServer)
$computer.psbase.invokeset('samAccountName',"$name`$")
$computer.psbase.invokeSet('userAccountControl', 0x00001000)
$computer.SetInfo()

#Définition du mot de passe du compte d'ordinateur (doit être identique au nom du compte et en minuscules)
$computer.SetPassword($name.ToLower())
$computer.SetInfo()

Exemple d'utilisation :

PS > ./New-Computer.ps1 -Name machineTest -netbootServer PXE_SRV -netbootGUID 564DC5C5-F474-1D83-9F1C-C16FEA324DEF

Si vous ne voulez pas vous embêter à toujours spécifier le nom du serveur PXE alors changez la valeur par défaut DEFAULT_PXE_SRV au niveau du bloc PARAM. Ainsi vous pourrez omettre ce paramètre, comme ceci:

PS > ./New-Computer.ps1 -Name machineTest -netbootGUID 564DC5C5-F474-1D83-9F1C-C16FEA324DEF

Dernière mise à jour : ( 30-11-2010 )
 
© 2017 PowerShell-Scripting.com