Enteo und Automatisierung Teil 4

gearsIn 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)
        }
      }
    }
  }
}
This entry was posted in Deutsch, Powershell and tagged , , . Bookmark the permalink.