#Festlegen der in die Liste aufzunehmenden Büros (Feld "Office" im Active Directory englische Version)
$offices = @("Hamburg","Berlin","München","Frankfurt")
#Auflisten der Büros, die nur über eine einzige Benutzergruppe (=Abteilung) verfügen, um bei diesen keine Zwischenüberschrift zu erzeugen
$singlegroup = @("","MUC","FRA","BER")
#Erzeugen einer Liste und Ablage in Variable $list
$list = @{Expression={[string]$_.DisplayName};Label="Name";width=45}, `
@{Expression={[string]$_.telephoneNumber};Label="Durchwahl";width=25}
$Date = Get-Date -Format dd.MM.yyyy
#Formatieren der Html-Seite
$head = @'
Telefonverzeichnis der Mitarbeiter in Deutschland
'@
#Einfügen der Überschriften und des Aktualisierungsdatums in die Html-Datei
ConvertTo-HTML -head $head -body "" | out-file D:\Script\telefonliste.html Telefonverzeichnis der Mitarbeiter in Deutschland
´
Zuletzt aktualisiert: $Date
foreach ( $office in $offices ) {
ConvertTo-HTML -head $head -body "$Office
" | out-file D:\Script\telefonliste.html -append
switch ($office)
{
"Hamburg" {$groups = 'Verwaltung','Verkauf','IT'}
"Berlin" {$groups = 'Verkauf_BER'}
"München" {$groups = 'Verkauf_MUC'}
"Frankfurt" {$groups = 'Verkauf_FRA'}
}
foreach ( $group in $groups )
{
#Gruppenüberschrift nur für Büros mit mehreren Gruppen
if ( $group -notin $singlegroup ) {
ConvertTo-HTML -head $head -body "$Group
" | out-file D:\Script\telefonliste.html -append
}
#Auslesen der Anwenderdaten aus dem AD
get-aduser -Filter 'enabled -eq $true' -Properties displayname,department,telephonenumber,office -SearchBase 'DC=europe,DC=contoso,DC=com' | select-object displayname,department,telephonenumber,office | where { ( $.telephoneNumber.length -gt 0 ) -AND ($.Office -eq $office ) -AND ($.Department -eq $group ) } | select-object @{Name="Name";Expression={$.DisplayName}}, @{Name="Durchwahl";Expression={$_.telephoneNumber}} | sort Name | convertto-html -Fragment | out-file D:\Script\telefonliste.html -Append
}
}
#Auf SharePoint hochladen
$wc = new-object System.Net.WebClient
$wc.Credentials = [System.Net.CredentialCache]::DefaultCredentials
function getdestname($filename){ "http://meinsharepoint/InformationResources/" + $(split-path -leaf $filename)}
dir "d:\script\telefonliste.html" | % { $uploadname=getdestname $; $wc.UploadFile($uploadname,"PUT", $.FullName) }
add-content d:\script\telefonliste.log "Telefonliste aktualisiert am $date"
#Nachkontrolle bei manueller Ausführung ohne Kommentarzeichen
#invoke-item D:\Script\telefonliste.html
#write-host "Telefonliste aktualisiert."
Donnerstag, 6. Oktober 2016
PowerShell / Active Directory / SharePoint: Erzeugen einer Telefonliste aus dem AD
Trackbacks
Trackback-URL für diesen Eintrag
Keine Trackbacks