Zum Inhalt wechseln


Foto

Exchange Befehl per Skript ausführen


  • Bitte melde dich an um zu Antworten
6 Antworten in diesem Thema

#1 websas

websas

    Newbie

  • 8 Beiträge

 

Geschrieben 08. Dezember 2016 - 15:11

Hallo zusammen,

 

ich bin was Skripten und Shell anbelangt leider ein absoluter Noob und konnte auf die schnelle auch keine Lösung dazu finden, daher wäre ich für hilfreiche Tipps sehr dankbar.

 

Hintergrund:

 

Ich möchte bestimmte Verteilergruppen per Skript im Outlook Adressbuch aus- / einblenden.

 

Wenn ich das ganze manuell in der Exchange Management Shell mache funktioniert das damit auch:

 

Set-DistributionGroup -Identity Beispielverteilergruppe -HiddenFromAddressListsEnabled $false

 

Ich würde das ganze jetzt aber gerne automatisiert einmal täglich laufen lassen und bekomme es absolut nicht hin.

 

Vom Prinzip her sollte ich eine Batch Datei haben, die ich per Taskplaner ausführe - durch diese Batch Datei wird dann ein Powershell Skript ausgeführt das die entsprechenden Befehle zum ein/ausblenden enthält.

 

Richtig soweit?

 

Oder wie muss ich das ganze aufbauen?

 

Und vor allem, wie muss die Syntax des PS Skripts und der Batch Datei aussehen?

 

VG

Sascha


Bearbeitet von websas, 08. Dezember 2016 - 15:12.


#2 Dukel

Dukel

    Board Veteran

  • 9.156 Beiträge

 

Geschrieben 08. Dezember 2016 - 15:14

Du kannst die Powershell auch direkt aus dem Task Planer starten.


Stop making stupid people famous.


#3 Nobbyaushb

Nobbyaushb

    Board Veteran

  • 2.478 Beiträge

 

Geschrieben 08. Dezember 2016 - 15:19

Und wenn du nicht die PowerShell vom Exchange verwendest, musst du erst die module einbinden, Jörge hat das mal beschrieben:

https://social.techn...change_serverde

 

;)

 

Es sei mir gestattet, nach der Sinnhaftigkeit von der Aktion zu fragen?


Bearbeitet von Nobbyaushb, 08. Dezember 2016 - 15:20.

Mfg aus Bremen

 

Norbert (der andere :))

MVP Exchange Server


#4 websas

websas

    Newbie

  • 8 Beiträge

 

Geschrieben 08. Dezember 2016 - 16:10

Und wenn du nicht die PowerShell vom Exchange verwendest, musst du erst die module einbinden, Jörge hat das mal beschrieben:

https://social.techn...change_serverde

 

;)

 

Es sei mir gestattet, nach der Sinnhaftigkeit von der Aktion zu fragen?

 

Ganz sinnhaftig ist das ganze leider nicht, aber wir brauchen einen Workaround für ein Drittanbieter Tool (Erstellung von Abwesenheitsübersichten anhand von Outlook Kalendereinträgen, da wir viele verschachtelte Verteiler haben und die nicht alle dauerhaft sichtbar sein sollen, ist leider dieser Umweg notwendig.

 

Also ich habe es jetzt zumindestens mal hinbekommen das es als PS Skript funktioniert:

 

#

. 'C:\Program Files\Microsoft\Exchange Server\V15\Bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto
Set-DistributionGroup -Identity Beispielverteilername -HiddenFromAddressListsEnabled $false

#

 

Wenn ich das Skript dann aber im Taskplaner mit den Standardeinstellungen ausführe schlägt es mit (0x1) fehl.

Weiß jemand woran das liegen kann?


Bearbeitet von websas, 08. Dezember 2016 - 16:11.


#5 Nobbyaushb

Nobbyaushb

    Board Veteran

  • 2.478 Beiträge

 

Geschrieben 08. Dezember 2016 - 16:11

Unter welchem Kontext läuft das Script, ein Dienstkonto mit PW angegeben?

 

Dieses Konto muss die passenden Rechte auf dem Exchange haben, Stichwort RBAC

 

;)


Mfg aus Bremen

 

Norbert (der andere :))

MVP Exchange Server


#6 PowerShellAdmin

PowerShellAdmin

    Board Veteran

  • 1.128 Beiträge

 

Geschrieben 09. Dezember 2016 - 07:57

0x1 heißt, dass der Skript fehlerhaft ausgeführt wurde (Returncode) und ist keine qualifzierte Fehlerangabe.

 

Für Debugging sollte man seine PowerShell Skripte am besten immer ein Logging verwenden.

Hier bietet sich eine Trap mit entsprechenden Template an, was dann in eine Logdatei übergeben wird :) und oder noch per Email zugestellt werden.

Meine PS Skripte haben jedenfalls immer ein kompletten Kontstrukt und enthalten nicht nur den Einzeiler (falls dieser den mal ausreicht ;) )

 

Je nach PS Version (ab 3 nicht mehr notwendig), musst du in deinem Skript das PS Exchange Modul noch importieren, damit er die Exchange Befehler ausführen kann.

Ansonsten hat ja Nobby bereits geschrieben, dass der Kontext, unter dem die Skriptausfühurng stattfindet, entscheidend ist.


Bearbeitet von PowerShellAdmin, 09. Dezember 2016 - 08:01.

Möge die Macht der PS mit Dir sein.


#7 websas

websas

    Newbie

  • 8 Beiträge

 

Geschrieben 12. Dezember 2016 - 10:51

Habe es jetzt zum Laufen bekommen. Danke für die Hilfe.

Ein Problem war u.a. noch ein Leerzeichen im Skriptnamen.

 

Lösung:

 

Skript:

 

Set-DistributionGroup -Identity Verteilername -HiddenFromAddressListsEnabled $false

 

Task:

 

Program/script
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
add arguments
-NonInteractive -WindowStyle Hidden -command ". 'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; Skriptpfad"