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)
}
}
}
}
}
