florian961988
Goto Top

Powershell Skript für Abwesendheit

Hallo,

ich möchte folgendes realisieren,
ein Abwesendheitsskript mit abfrage, zweck ist, hier gehen Leute in Urlaub vergessen Abwesend zu stellen und EMAILS werden nicht verarbeitet!
Oder wenn die Kollegen krank sind, dass die EMAIL einfach weitergeleitet werden

Ich habe schon mal angefangen und bin dann auf dem Stand geblieben!
$EUser = Read-Host -Prompt "Bitte geben Sie das Kürzel des Benutzers ein!"
Get-MailboxAutoReplyConfiguration $EUser


$Auswahl= Read-Host -Prompt "Sollte bei AutoReplyState ein Disabled stehen und der Kollege ist Krank oder im Urlaub, dann mit 1 =ja weiter sonst 2=nein oder Kellege wieder da mit 3"


if($Auswahl -eq '1')
{
Set-MailboxAutoReplyConfiguration -Identity $EUser -AutoReplyState Scheduled -InternalMessage „Hallo, ich bin derzeit nicht im Büro.“ -ExternalMessage „<html><body>Sehr geehrte Damen und Herren,<br><br>leider bin ich momentan nicht im Büro zu erreichen. In dringenden Fällen wenden Sie sich bitte an unsere Zentrale. Diese erreichen Sie unter der Rufnummer 0421/57290-0.<br><br>Mit freundlichen Grüßen<br><br>Beate Beispiel</body></html>“ -StartTime „10/11/2018 08:00:00“ -EndTime „11/12/2018 17:00:00“ -ExternalAudience All

$mailbox = $EUser
#$forward = $null;
$forward = "test@test.info";


Set-Mailbox $mailbox -ForwardingAddress $forward
Set-Mailbox $mailbox -ForwardingSmtpAddress $forward
Get-Mailbox $mailbox | FL DeliverToMailboxAndForward,ForwardingAddress,ForwardingSmtpAddress

}
elseif($Auswahl-eq '2')
{
exit
}
elseif ($Auswahl -eq '3')
{
Set-MailboxAutoReplyConfiguration -Identity $EUser -AutoReplyState Disabled
$mailbox = $EUser
$forward = $null;
#$forward = "test@test.info";


Set-Mailbox $mailbox -ForwardingAddress $forward
Set-Mailbox $mailbox -ForwardingSmtpAddress $forward
Get-Mailbox $mailbox | FL DeliverToMailboxAndForward,ForwardingAddress,ForwardingSmtpAddress
}
else
{
exit
}

Meine Probleme sind folgende!
Ich kann das Startdatum und das Enddatum nicht einlesen, nicht über variablen und ist der Status Abwesend gesetzt geht auch die Nachricht nicht raus!
Verbindung mit Get-PSSession gelingt mir noch nicht!


Was ich mir wünsche und wo ich nicht weiter weiß, ob das geht oder nicht!

Erstens:
Einlesen der Startdatum und Enddatum mit Zeit von Tastatur
einlesen einer Textdatei für Internal Message und External Message
so das sind die bescheidenen Wünsche, was iwann dazu kommen soll, ist aus unserem CMS - System einstellen der Urlaubstage, aber das ist noch zukunfts Musik!


Als Server liegt hier ein 2012r2 mit Exchange 13!

Content-Key: 389524

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

Ausgedruckt am: 28.03.2024 um 09:03 Uhr

Mitglied: NetzwerkDude
NetzwerkDude 15.10.2018 um 14:28:54 Uhr
Goto Top
Schritt 1: Weniger Kaffee !!! Das dürfte die Anzahl der Ausrufezeichen deutlich reduzieren !!!

Einlesen vom Datum interaktiv:
$Datum = Read-Host "bitte Datum eingeben" | Get-Date -Format "MM\/dd\/yyyy HH:mm:ss"  
Damit sollte das Format stimmen und die Exchange Konsole es akzeptieren

Einlesen der Textdatei:
$Text = (Get-Content ".\text.txt") -join '<br>'   
Somit kannst du in die text.txt ganz normal alles mit Zeilenumbrüchen ganz normal schreiben, das -join '<br>' klebt es zusammen und setze autmatisch die HTML Tags

NOCH EINEN RUHIGEN TAG DANN SONST !!!
Mitglied: Florian961988
Florian961988 15.10.2018 um 14:32:46 Uhr
Goto Top
Ich werde es heut mal probieren vielen dank
Mitglied: Florian961988
Florian961988 15.10.2018 um 14:36:07 Uhr
Goto Top
$DatumAn = Read-Host "bitte Datum eingeben" | Get-Date -Format "MM\/dd\/yyyy HH:mm:ss"
$DatumEND = Read-Host "bitte Datum eingeben" | Get-Date -Format "MM\/dd\/yyyy HH:mm:ss"

Set-MailboxAutoReplyConfiguration -Identity $EUser -AutoReplyState Scheduled -InternalMessage „Hallo, ich bin derzeit nicht im Büro.“ -ExternalMessage „<html><body>Sehr geehrte Damen und Herren,<br><br>leider bin ich momentan nicht im Büro zu erreichen. In dringenden Fällen wenden Sie sich bitte an unsere Zentrale. Diese erreichen Sie unter der Rufnummer 0421/57290-0.<br><br>Mit freundlichen Grüßen<br><br>Beate Beispiel</body></html>“ -StartTime $DatumAn -EndTime $DatumEn -ExternalAudience All

so?
Mitglied: NetzwerkDude
NetzwerkDude 15.10.2018 um 14:39:39 Uhr
Goto Top
Ja, sollte so passen (evtl. kannst ja noch in den Read-Host den Text ändern, also z.B. Bitte Anfangsdatum eingeben)
Mitglied: Florian961988
Florian961988 15.10.2018 um 15:04:15 Uhr
Goto Top
das mit den Texten geht auf jeden fall, allerdings wenn ich weiterleiten möchte ist der status bei delivertoMailboxand Forward auf False und es wird nicht weiter geleitet

es sind ja eigentlich diese zeilen
$mailbox = $EUser
#$forward = $null;
$forward = "test@test.info";


Set-Mailbox $mailbox -ForwardingAddress $forward
Set-Mailbox $mailbox -ForwardingSmtpAddress $forward
Get-Mailbox $mailbox | FL DeliverToMailboxAndForward,ForwardingAddress,ForwardingSmtpAddress


es kommt dann folgende Meldung:

Warnung: bevor die Einstellungen für die Weiterleitung wirksam werden, müssen Sie sich an das Helpdesk wenden und anfordern, dass die zuvor vom administrator festgelegte Weiterleitung deaktiviert wird.

Ich bin Administrator??????
Mitglied: NetzwerkDude
NetzwerkDude 15.10.2018 um 15:17:57 Uhr
Goto Top
Bevor zu die Welt zusammenskriptest, probiert doch mal ob es als einzeiler funktioniert:
https://docs.microsoft.com/de-de/exchange/recipients/user-mailboxes/emai ...

Set-Mailbox -Identity "Ken Sanchez" -ForwardingSMTPAddress "pilarp@contoso.com"  
Mitglied: Florian961988
Florian961988 15.10.2018 um 15:27:51 Uhr
Goto Top
es funktioniert und um ehrlich zu sein so eine Art von Skript habe ich noch nie gebaut!
Wenn ich das nu ausführe, dann geht es auch mit Abwesendheitsnotiz und zustellen in weiterleitung und ins eigene postfach

$EUser = Read-Host -Prompt "Bitte geben Sie das Kürzel des Benutzers ein!"
Get-MailboxAutoReplyConfiguration $EUser


$Auswahl= Read-Host -Prompt "Sollte bei AutoReplyState ein Disabled stehen und der/die Kollege/Kollegin ist Krank oder im Urlaub, dann mit 1 =ja weiter sonst 2=nein oder ist der Kollege\Kollegin wieder da mit 3 "


if($Auswahl -eq '1')
{
"Bitte geben sie das Startdatum mit Uhrzeit in folgendem Format DD.MM.YYYY HH:mm:ss ein, als Beispiel 15.10.2018 08:00:00"
$DatumEIN = Read-Host "bitte Datum eingeben" | Get-Date -Format "MM\/dd\/yyyy HH:mm:ss"

"Bitte geben sie das Enddatum mit Uhrzeit in folgendem Format DD.MM.YYYY HH:mm:ss ein als Beispiel 16.10.2018 18:00:00"
$DatumEND = Read-Host "bitte Datum eingeben" | Get-Date -Format "MM\/dd\/yyyy HH:mm:ss"

Set-MailboxAutoReplyConfiguration -Identity $EUser -AutoReplyState Scheduled -InternalMessage "Ich bin zur Zeit nicht im Büro" -ExternalMessage „<html><body>Sehr geehrte Damen und Herren,<br><br>leider bin ich momentan nicht im Büro zu erreichen. In dringenden Fällen wenden Sie sich bitte an unsere Zentrale. Diese erreichen Sie unter der Rufnummer 0421/57290-0.<br><br>Mit freundlichen Grüßen<br><br>Ihr Test-Team</body></html>“ -StartTime $DatumEIN -EndTime $DatumEND -ExternalAudience All

$mailbox = $EUser
#$forward = $null;
$forward = "info@test.de";


Set-Mailbox $mailbox -ForwardingAddress $forward
Set-Mailbox $mailbox -ForwardingSmtpAddress $forward
Set-Mailbox $mailbox -DeliverToMailboxAndForward $true
Get-Mailbox $mailbox | FL DeliverToMailboxAndForward,ForwardingAddress,ForwardingSmtpAddress
exit
}
elseif($Auswahl-eq '2')
{
exit
}
elseif ($Auswahl -eq '3')
{
Set-MailboxAutoReplyConfiguration -Identity $EUser -AutoReplyState Disabled
$mailbox = $EUser
$forward = $null;
#$forward = "info@test.de";


Set-Mailbox $mailbox -ForwardingAddress $forward
Set-Mailbox $mailbox -ForwardingSmtpAddress $forward
Set-Mailbox $mailbox -DeliverToMailboxAndForward $false
Get-Mailbox $mailbox | FL DeliverToMailboxAndForward,ForwardingAddress,ForwardingSmtpAddress
}
else
{
exit
}

jetzt muss ich nur noch herausfinden, wie ich eine Verbindung schaffe vom Client zum exchange, damit die Personalabteiltung das setzen kann zur not!
hinzukommt noch das die Leute keine lokalen admins sind und das zurecht, das werde ich testen, zur not muss ich die tage einfach erstmal per hand setzen!
Mitglied: NetzwerkDude
NetzwerkDude 15.10.2018 aktualisiert um 15:41:23 Uhr
Goto Top
Hier noch ein paar Links mit auf dem Weg:
Zu Exchange Konsole verbinden:
https://docs.microsoft.com/de-de/powershell/exchange/exchange-server/con ...

und Konzept um "der Personalabteilung zugang zu geben" : JEA
https://docs.microsoft.com/de-de/powershell/jea/overview

Aber das sind recht komplexe Themen, vielleicht versuchst du dich zuerst eher an den Grundladen von PS Remoting etc.

Den Thread kannst ja als gelöst markieren
Mitglied: Florian961988
Florian961988 15.10.2018 um 16:17:26 Uhr
Goto Top
vielen Dank

ja daran arbeite ich nu!

vielen vielen DANK

vll. drücke ich es dem AZUBI auf die Augen!