PS: User in Lotus Notes Registrieren

Moin,

eine Aufgabenstellung, die ich mir aus Faulheit selbst gestellt habe, war: Wir schleifen seit rund 4 Jahren ein „altes“ Lotus Domino Konstrukt (aufgrund einiger alter Workflows) mit uns herum, bei dem, für einige Workflows, nach wie vor neue User eingepflegt werden müssen. Das diese nur noch Dummyuser mit einer Mailweiterleitung im Userprofil sind, macht zwar das anlegen total leicht, kostet aber nach wie vor Zeit, da das Manuell passiert.

Nun ist es ja total einfach, mit Powershell User aus dem ADS herauszufiltern, nur wie bekomme ich diese in Lotus Domino rein? Unser Domino 8.5.3 läuft auf einem Windows 2012 Server, dem ich auch die ADS Powershell Feature spendiert habe.

Die User unterscheide ich zwischen der ADS OU „Innendienst“ und „Aussendienst“, dies ist wichtig, weil diese in Notes dann jeweils auf /ID/Firma bzw /AD/Firma zertifiziert werden.

So, nun das Script, welches ich mithilfe einiger spärlicher Google Ergebnisse zusammen geschustert habe und welches jede Nacht via Taskplaner läuft und mich via Mail benachrichtigt:

Vorraussetzungen: die 32Bit Powershell (%SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe)

 

$servername = $env:computername
### Wer wird benachrichtigt?
$mailto = „admins@domain.ltd“
$mailSubject = $servername + “ Task – Neue User wurden aktiviert”
### Mailserver?
$smtpServer = „mailserver.domain.tld“
### Absender
$emailFrom = $servername + „@domain.tld“
Import-Module ActiveDirectory

### Die Betreffenden User, bitte DistinguishedName beachten, hier kann auf OU Gefiltert werden
$newuser = Get-ADUser -Filter * -Properties Created | where{$_.Created -gt (get-date).Adddays(-1) -and $_.UserAccountControl -notlike „AccountDisabled*“ -and ($_.Distinguishedname -like „*Aussendienst*“ -or $_.DistinguishedName -like „*Innendienst*“)}

foreach ($user in $newuser) {

#ID oder AD? Wert aus DistinguishedName
If ($newuser.DistinguishedName -contains „Aussendienst“)
{ $UserOU = „AD“ }
else {$userOU = „ID“}

#ID Pfad – Netzlaufwerk oder Lokal, endend mit \
$idnetshare = „\\netshare\id\path\lala\“

#Stammdaten umsetzen
$givenname = $newuser.GivenName
$surname = $newuser.Surname
$SamAccountName = $newuser.SamAccountName

###Hier noch die Speziellen Infos zum Unternehmen aendern

Function Notes-RegisterPerson
{
param ($FirstName,$LastName,$UserName,$Password,$UserOU)

## Lotus Notes Fullname
$fullname = $Firstname + “ “ + $Lastname + „/“ + $UserOU +“/Firma“
### Weiterleitungsadresse
$fwdaddress = $FirstName + „.“ + $LastName + „@exchange.domain.tld“
Set-Variable ACLLEVEL_EDITOR -option Constant -value ‚4‘
Set-Variable ACLLEVEL_MANAGER -option Constant -value ‚7‘
Set-Variable REG_MAIL_OWNER_ACL_EDITOR -option Constant -value ‚2‘
Set-Variable REG_MAIL_OWNER_ACL_MANAGER -option Constant -value ‚0‘
Set-Variable NOTES_FULL_CLIENT -option Constant -value ‚176‘
Set-Variable ID_HIERARCHICAL -option Constant -value ‚172‘

$adminUser = „LocalDomainAdmins“

$notes = New-Object -comObject Lotus.NotesSession
$notes.Initialize()

$reg = $notes.CreateRegistration()
### Regserver Name
$reg.RegistrationServer = „RegServ/SRV/FIRMA“
##AblageOrt Certifier ID
if ($UserOU -eq „ID“){
$reg.CertifierIDFile = „e:\ou_id.id“
$certpasswd = „Password“
}
if ($UserOU -eq „AD“){
$reg.CertifierIDFile = „e:\ou_ad.id“
$certpasswd = „Password“
}
$reg.Expiration = Get-Date 1/1/2199
## Internetmailadresse
$reg.MailInternetAddress = $FirstName + „.“ + $LastName + „@domain.tld“
$reg.CreateMailDB = $false
$reg.IDType = $ID_HIERARCHICAL
$reg.IsNorthAmerican = $false
$reg.MinPasswordLength = „6“
$reg.UpdateAddressbook = $true
$reg.StoreIDInAddressbook = $false
$reg.ShortName = $UserName
$reg.MailOwnerAccess = $REG_MAIL_OWNER_ACL_MANAGER
$reg.Mailaclmanager = $adminUser
$reg.MailTemplateName = „mail85.ntf“
$reg.RegistrationLog = „log.nsf“

$mailDBPath = „mail\“ + $UserName + „.nsf“
$idFile = $idnetshare + $Username + „.id“
### Befehl an Server, bitte Notesserverkorrigieren
$reg.RegisterNewUser($LastName,$idFile, „HomeNotesserver/SRV/FIRMA“, $FirstName, „“, $certpasswd, „“, „“, $mailDBPath, $fwdaddress, $Password)
}
#Userpassword aendern
Notes-RegisterPerson -FirstName $newuser.GivenName -LastName $newuser.Surname -UserName $SamAccountName -Password „lalala#1“ -UserOU $UserOU

}
if ($newuser)

{
$head1 = „Folgende neue User wurden bearbeitet: “
$head2 = „Dies ist eine automatisch erzeugte Mail!“

$body = $head1 + ($newuser | out-string) + $head2
Send-MailMessage -to $mailto -Subject $mailSubject -Smtpserver $smtpServer -Body $body -from $emailFrom
}
else
{
Write-Host „Keine User zum aktivieren“

}

Fragen gerne in die Kommentare.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.