blackhawk17
Goto Top

Exchange 2013 Abwesenheitsnotiz per Powershell anpassen

Guten Tag,
ich wollte gerne bei verschiedenen Benutzern bzgl. Betriebsferien den Abwesenheitstext in Outlook anpassen.

Das Funktioniert mit meinem Skript auch recht gut. Was der Benutzer allerdings noch machen muss, ist seine Signatur dort einzufügen.

Dies wollte ich ebenfalls gerne im Text mitgeben, bekomme allerdings keine vernünftigen Werte zurück.

# ActiveDirectoryModul laden
Import-Module ActiveDirectory

# Exchange Snapin laden
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn

# Text auf Mitglieder der Gruppe anwenden (deutsch)
Get-ADGroupMember $group_name1 | Get-ADUser -Properties Company | %{
    $mailbox = Get-Mailbox $_.SamAccountName -ErrorAction SilentlyContinue
    
    
$username = Get-ADGroupMember $group_name1 | Get-ADUser | Select-Object SamAccountName

$company = Get-ADGroupMember $group_name1 | Get-ADUser -Properties Company | Select-Object Company


$GetMailboxState = Get-MailboxAutoReplyConfiguration $mailbox

if ($GetMailboxState.AutoReplyState -eq 'Enabled')   
                {
                               echo "do nothing"  
                }
  else{
                              
                              Set-MailboxAutoReplyConfiguration -Identity $mailbox -ExternalAudience all -InternalMessage $Emailbody -ExternalMessage $Emailbody
                             
                              
                              $EmailBody = @"  
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
	</head>
<body>
<span style="font-family: Calibri;">  

	
Sehr geehrte Damen und Herren, <br><br>
ich bin derzeit nicht im Hause. Ihre Email-Nachricht wird nicht weiter geleitet. <br><br> 
Sollten Sie ein technisches Anliegen haben senden sie ihre Nachricht bitte an emailadresse oder wenden sie sich an die IT-Servicedesk unter Tel.: +49 123456789.
<br><br>
Danke
<br><br>
Mit freundlichen Grüßen<br><br>

$username


Wenn ich jetzt die Variabel $Username angebe dann kommt auch mein Benutzername nur halt nicht in der Formatierung wie es sein soll.

Es wird dann so @{samaccountname max.mustermann} dar gestellt und das schaut echt doof aus.

Hat da jemand von Euch einen Tipp für mich was ich machen müsste um die Signatur sauber einzufügen?

Vielen Dank

Content-Key: 324437

Url: https://administrator.de/contentid/324437

Printed on: April 19, 2024 at 06:04 o'clock

Member: Dani
Solution Dani Dec 21, 2016 at 12:30:40 (UTC)
Goto Top
Moin,
ich wollte gerne bei verschiedenen Benutzern bzgl. Betriebsferien den Abwesenheitstext in Outlook anpassen.
wenn sich die Anzahl der betoffenen Benutzer in Grenze hält, bist du evtl. mit dem Tool schneller.


Gruß,
Dani
Member: blackhawk17
blackhawk17 Dec 21, 2016 at 12:43:15 (UTC)
Goto Top
hi danke für die Antwort.

Habs aber schon gefunden.

$usersam = $username.samaccountname

Ich muss den SAMAccountname nochmal extra in eine Variable übertragen, dann geht es.

Trotzdem vielen Dank face-smile
Member: Goshen
Goshen Dec 22, 2016 at 07:40:16 (UTC)
Goto Top
Wie sieht es eigentlich mit einer Signatur aus ? kann man diese nicht abrufen ?
Member: blackhawk17
blackhawk17 Dec 22, 2016 at 09:42:54 (UTC)
Goto Top
Hallo

leider nein.
Leider funktioniert meine Abfrage doch nicht so wie gedacht.

Er hängt jetzt alle Benutzer der Gruppe an den Text mit dran.

Da es sich um mehrere User handelt bringt mir das Tool von Dani leider auch nicht weiter face-sad
Member: Dani
Dani Dec 22, 2016 at 17:31:30 (UTC)
Goto Top
Moin,
Da es sich um mehrere User handelt bringt mir das Tool von Dani leider auch nicht weiter
naja, du müsstest es für jeden Benutzer eben manuell konfigurieren. Das ist wie immer eine Aufwand/Ergebnis-Problem.


Gruß,
Dani
Mitglied: 131381
Solution 131381 Dec 22, 2016 updated at 17:47:53 (UTC)
Goto Top
Zitat von @blackhawk17:

Hallo

leider nein.
Leider funktioniert meine Abfrage doch nicht so wie gedacht.

Er hängt jetzt alle Benutzer der Gruppe an den Text mit dran.

Kein Wunder, da stimmt ja auch einiges nicht
# ActiveDirectoryModul laden
Import-Module ActiveDirectory

# Exchange Snapin laden
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn

# Text auf Mitglieder der Gruppe anwenden (deutsch)
Get-ADGroupMember $group_name1 -Recursive | Get-ADUser -Properties Company | select -Unique | %{
    $mailbox = Get-Mailbox $_.SamAccountName -ErrorAction SilentlyContinue
    if ($mailbox){
        if ((Get-MailboxAutoReplyConfiguration $mailbox).AutoReplyState -ne 'Enabled'){  

            $EmailBody = @"  
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
	</head>
<body>
<span style="font-family: Calibri;">  
Sehr geehrte Damen und Herren, <br><br>
ich bin derzeit nicht im Hause. Ihre Email-Nachricht wird nicht weiter geleitet. <br><br> 
Sollten Sie ein technisches Anliegen haben senden sie ihre Nachricht bitte an emailadresse oder wenden sie sich an die IT-Servicedesk unter Tel.: +49 123456789.
<br><br>
Danke
<br><br>
Mit freundlichen Grüßen<br><br>
$($_.Name)
"@  
             Set-MailboxAutoReplyConfiguration -Identity $mailbox -ExternalAudience all -InternalMessage $Emailbody -ExternalMessage $Emailbody
        }
   }
}
Gruß mik
Member: blackhawk17
blackhawk17 Dec 27, 2016 at 07:42:35 (UTC)
Goto Top
Klasse genau das war es.

Danke schön face-smile
Member: blackhawk17
blackhawk17 Jan 01, 2017 at 13:53:52 (UTC)
Goto Top
Nochmal eine ganz Bescheidene Frage.

Mit $($_.Name) lese ich ja nun das Feld Name aus, welches sich in der Variable $mailbox befindet.

Habe ich eine Möglichkeit die Signatur noch zu erweitern?

Sprich: Straße, Telefon, Ort und Firma auch noch irgendwie mit anzugeben?

Wenn ich jetzt mal in die $Mailbox reinschaue sind dort die Informationen ja leider nicht reingeladen worden.

Wie müsste ich das Skript entsprechend umbauen um diese Informationen zu erlangen?

Besten Dank und allen ein Frohes neues Jahr face-smile
Member: Dani
Dani Jan 01, 2017 at 14:00:38 (UTC)
Goto Top
Moin,
Sprich: Straße, Telefon, Ort und Firma auch noch irgendwie mit anzugeben?
wenn du diese Informationen im Active Diretory bei den Benutzer sauber pflegst - klaro. Stichtwort: get-aduser


Gruß,
Dani
Member: blackhawk17
blackhawk17 Jan 01, 2017 at 14:09:17 (UTC)
Goto Top
Hallo Dani,

ja nur stehe ich da gerade auf dem Schlauch oder habe ein Verständnisproblem

Ich habe ja folgenden Befehl

Get-ADGroupMember $group_name1 -Recursive | Get-ADUser -Properties Company | select -Unique | %{

$mailbox = Get-Mailbox $_.SamAccountName -ErrorAction SilentlyContinue


Den Get-ADUser habe ich ja schon bereits drin. Ich werde dann ja wahrscheinlich eine 2. Variable anlegen müssen um die Infos zu laden oder?

Was mir jetzt nicht ganz klar ist, es müssen ja jeweils wie bei $Mailbox die Daten der aktuelles Users sein und nicht irgendwelche Daten.

Da ist mir gerade nicht klar wie ich das abfragen kann.
Mitglied: 131381
131381 Jan 01, 2017 updated at 15:30:56 (UTC)
Goto Top
Mit $($_.Name) lese ich ja nun das Feld Name aus, welches sich in der Variable $mailbox befindet.
Falsch! Das sind schon die Informationen von Get-ADUser, da wir uns ja in der Pipe über diese Objekte befinden. Also kannst du die Eigenschaften direkt ansprechen wenn du diese auch bei Get-AdUser unter -properties angibst.
Mit Angabe von einem * werden alle Eigenschaften abgefragt und in der Pipe übergeben. Innerhalb der Schleife kannst du sie dann wie gewhohnt über die Schleifenvariable abfragen:
Get-ADGroupMember $group_name1 -Recursive | Get-ADUser -Properties * | select -Unique | %{ 
$_.Company
$_.EMailAddress
$_.Department
# usw.
}
Das zusätzliche umgebende Klammernpaar ist nur bei der Verwendung in einem String nötig.
Member: blackhawk17
blackhawk17 Jan 04, 2017 at 10:22:43 (UTC)
Goto Top
Guten Morgen,

ok Filter auf * setzen ... ok da stand ich auf dem Schlauch.

Funktioniert wunderbar.

Vielen Dank