In diesem Teil werden die Code Schnippchen zusammengebaut. Als Input benötigt das Script eine CSV Datei mit folgendem Header:
client,OU,User,Mac,OS,Softwareliste
- Client: Name des neuen Computers
- OU: Abteilungsname (wird als OrganisationalUnit abgebildet)
- User: Benutzername (wird in Description hinterlegt)
- Mac: MAC-Adresse des Computers (wird in InitialMacAddress hinterlegt)
- OS: Gruppe, in der der Computer für die OS-Installation eingeordnet werden muss
- Softwareliste: CSV Liste der zuzuordnenden Software (muss in ” stehen)
Somit sieht das Powershell Script so aus:
Add-PSSnapin NwcServices.BlsAdministration $server="\\enteowsserver" $csvfile="C:\computerliste.csv" function createOU {param([string]$name,$ou) cd $ou.path $ouRT=Get-EmdbOrganizationalUnit -recurse $name if (-not $ouRT) { $name.toCharArray() | foreach { $ouname=$ouname + $_ $oupath=$ou.path + "\" + $ouname $ou=Get-EmdbOrganizationalUnit -recurse $ouname if (-not $ou) { $ou=new-EmdbOrganizationalUnit -Path $oupath } } $ou } else { $ouRT } } New-PSDrive -Name emdb -psProvider BlsEmdb -Root $server cd "emdb:\rootdse" $csv=import-csv $csvfile $csv | forEach-Object { if (-not $_.client -eq "") { $ou=Get-EmdbOrganizationalUnit -recurse "Powershell" $ou=createOU $_.OU $ou cd "emdb:\rootdse" $filter="Computer.InitialMACAddress="+$_.Mac $pc=Get-EmdbComputer -recurse -filter $filter if (-not $pc) { $pc=New-EmdbComputer -Path $ou.path -Name $_.client -description $_.user -InitialMACAddress $_.mac } else { if (-not ($pc.Name -eq $_.client)) { $pc.name=$_.client $pc.update() } if (-not ($pc.description -eq $_.user)) { $pc.description=$_.user $pc.update() } } if (-not ($ou.path -eq $pc.getParentContainer().path)) { $pc.moveTo($ou) } $grp=get-emdbgroup -recurse $_.OS $grp.addMember($pc) $sw=$_.Softwareliste.split(",") $sw |foreach { if (-not $_ -eq "") { $grp=get-emdbgroup -recurse $_ if ($grp) { $grp.addMember($pc) } } } } }