none
Exchange Powershell Script schreiben RRS feed

  • Frage

  • Guten morgen zusammen,

    ich bin neu hier und noch nicht soweit wie viele andere hier.

    Ich betreibe 2 Win2008 Server mit Exchange 2010 im Cluster.

    Es kommt natürlich vor, dass ich von Zeit zu Zeit, die Server nacheinander einmal neu booten muss wegen Update.

    Um in Anschluss die Datenbanken auf den Servern zu verteilen,

    gibt es einen netten Exchange Powershell Script Befehl der wie folgt aussieht:

    .\RedistributeActiveDatabase.ps1 -DagName MeineDAG -ShuffleActiveDatabase -showFinalDatabaseDistribution

    und diesen Befehl kann nur im Verzeichnis c:\Program Files\Microsoft\Exchange Server\v14\scripts ausgeführt werden.

    Wie kann ich diesen Befehl über ein Script ausführen lassen?

    Danke im Voraus.

    Gruß
    Sascha

    Donnerstag, 22. November 2012 06:37

Antworten

  • Moin,

    es gibt gefühlt 1 Million Beispiele im Internet dafür, wie man einen PowerShell-Befehl oder ein PowerShell-Script per Batch oder Doppelklick startet.:)

    Leg Dir eine neue Verknüpfung an, die auf folgendes Ziel zeigt:

    %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -command "& 'C:\Program Files\Microsoft\Exchange Server\v14\scripts\RedistributeActiveDatabases.ps1' -DagName MeineDAG -ShuffleActiveDatabase -showFinalDatabaseDistribution"

    ACHTUNG: Beachte bitte die verschiedenen Anführungszeichen hinter -command!

    BTW: Ich persönlich bevorzuge es, den Datenbank eine feste Aktivierungsreihenfolge einzustellen und dann anstelle von -ShuffleActiveDatabase mit "-BalanceDbsByActivationPreference" zu arbeiten. Dann liegen die DB immer auf den gleichen Knoten.


    Grüße aus Berlin schickt Robert
    MVP Exchange Server
    • Als Antwort markiert DrHigh1973 Freitag, 23. November 2012 06:53
    Donnerstag, 22. November 2012 07:11
  • Hallo Sascha Willkommen!

    .\ (Punkt Schrägstrich) ist in Windows eine Abkürzung für "Aktueller Pfad"und heißt so viel wie: "Such den Befehl RedistributeActiveDatabase.ps1 im Aktuellen Verzeichnis in dem sich der Explorer oder die Konsole oder die PowerShell befindet".

    Da sich das PowerShell Skript im Ordner C:\Program Files\Microsoft\Exchange Server\v14\scripts befindet, musst du mit dieser Schreibweise erst den Ordner aufsuchen damit du das Script starten kannst.

    Wenn du das Script von einem anderen PowerShell Skript aus starten willst, dann reicht die Angabe des gesamten Pfades zum ausführen des Scripts!

    Beispiel:

    C:\Program Files\Microsoft\Exchange Server\v14\scripts\RedistributeActiveDatabase.ps1  -DagName MeineDAG -ShuffleActiveDatabase -showFinalDatabaseDistribution

    So kann der Aufruf das Script finden.

    Du kannst auch den Aufruf Operator & vor den Pfad zu dem Skript schreiben, dann wird dies noch deutlicher:

    Beispiel:

    & C:\Program Files\Microsoft\Exchange Server\v14\scripts\RedistributeActiveDatabase.ps1  -DagName MeineDAG -ShuffleActiveDatabase -showFinalDatabaseDistribution


    Durch eine andere Technik die “dot sourcing” genannt wird kann man in der PowerShell ein externes Skript in das Aktuelle Skript "virtuell einfügen". Das eingefügte Skript verhält sich dann so als ob es als Text eingefügt wurde. (In der PowerShell Dokumentation wird "dot sourcing " "Punktquellnotation zur Bereichsangabe" genannt).
    Um ein Skript oder eine Funktion zum aktuellen Bereich (Scope) hinzuzufügen, geben Sie im Aufruf einen Punkt (.) und ein Leerzeichen vor dem Pfad ein.

    Beispiel:

    . C:\Program Files\Microsoft\Exchange Server\v14\scripts\RedistributeActiveDatabase.ps1  -DagName MeineDAG -ShuffleActiveDatabase -showFinalDatabaseDistribution

    Dies ist nicht zu verwechseln mit dem "Aktueller Pfad" !
    Diese Schreibweise kannst du aber auch benutzen!

    Wenn das Script NICHT von einem anderen PowerShell Skript aus aufgerufen wird, dann läuft die PowerShell noch nicht und du kannst z.B. von einer DOS Konsole diesen Befehl benutzen:

    Beispiel Eine (Zeile):

    PowerShell.exe -command "& 'C:\Program Files\Microsoft\Exchange Server\v14\scripts\RedistributeActiveDatabases.ps1' -DagName MeineDAG -ShuffleActiveDatabase -showFinalDatabaseDistribution" –ExecutionPolicy unrestricted


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!



    • Bearbeitet Peter Kriegel Donnerstag, 22. November 2012 15:06
    • Als Antwort markiert DrHigh1973 Freitag, 23. November 2012 06:53
    Donnerstag, 22. November 2012 07:34

Alle Antworten

  • Moin,

    es gibt gefühlt 1 Million Beispiele im Internet dafür, wie man einen PowerShell-Befehl oder ein PowerShell-Script per Batch oder Doppelklick startet.:)

    Leg Dir eine neue Verknüpfung an, die auf folgendes Ziel zeigt:

    %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -command "& 'C:\Program Files\Microsoft\Exchange Server\v14\scripts\RedistributeActiveDatabases.ps1' -DagName MeineDAG -ShuffleActiveDatabase -showFinalDatabaseDistribution"

    ACHTUNG: Beachte bitte die verschiedenen Anführungszeichen hinter -command!

    BTW: Ich persönlich bevorzuge es, den Datenbank eine feste Aktivierungsreihenfolge einzustellen und dann anstelle von -ShuffleActiveDatabase mit "-BalanceDbsByActivationPreference" zu arbeiten. Dann liegen die DB immer auf den gleichen Knoten.


    Grüße aus Berlin schickt Robert
    MVP Exchange Server
    • Als Antwort markiert DrHigh1973 Freitag, 23. November 2012 06:53
    Donnerstag, 22. November 2012 07:11
  • Hallo Sascha Willkommen!

    .\ (Punkt Schrägstrich) ist in Windows eine Abkürzung für "Aktueller Pfad"und heißt so viel wie: "Such den Befehl RedistributeActiveDatabase.ps1 im Aktuellen Verzeichnis in dem sich der Explorer oder die Konsole oder die PowerShell befindet".

    Da sich das PowerShell Skript im Ordner C:\Program Files\Microsoft\Exchange Server\v14\scripts befindet, musst du mit dieser Schreibweise erst den Ordner aufsuchen damit du das Script starten kannst.

    Wenn du das Script von einem anderen PowerShell Skript aus starten willst, dann reicht die Angabe des gesamten Pfades zum ausführen des Scripts!

    Beispiel:

    C:\Program Files\Microsoft\Exchange Server\v14\scripts\RedistributeActiveDatabase.ps1  -DagName MeineDAG -ShuffleActiveDatabase -showFinalDatabaseDistribution

    So kann der Aufruf das Script finden.

    Du kannst auch den Aufruf Operator & vor den Pfad zu dem Skript schreiben, dann wird dies noch deutlicher:

    Beispiel:

    & C:\Program Files\Microsoft\Exchange Server\v14\scripts\RedistributeActiveDatabase.ps1  -DagName MeineDAG -ShuffleActiveDatabase -showFinalDatabaseDistribution


    Durch eine andere Technik die “dot sourcing” genannt wird kann man in der PowerShell ein externes Skript in das Aktuelle Skript "virtuell einfügen". Das eingefügte Skript verhält sich dann so als ob es als Text eingefügt wurde. (In der PowerShell Dokumentation wird "dot sourcing " "Punktquellnotation zur Bereichsangabe" genannt).
    Um ein Skript oder eine Funktion zum aktuellen Bereich (Scope) hinzuzufügen, geben Sie im Aufruf einen Punkt (.) und ein Leerzeichen vor dem Pfad ein.

    Beispiel:

    . C:\Program Files\Microsoft\Exchange Server\v14\scripts\RedistributeActiveDatabase.ps1  -DagName MeineDAG -ShuffleActiveDatabase -showFinalDatabaseDistribution

    Dies ist nicht zu verwechseln mit dem "Aktueller Pfad" !
    Diese Schreibweise kannst du aber auch benutzen!

    Wenn das Script NICHT von einem anderen PowerShell Skript aus aufgerufen wird, dann läuft die PowerShell noch nicht und du kannst z.B. von einer DOS Konsole diesen Befehl benutzen:

    Beispiel Eine (Zeile):

    PowerShell.exe -command "& 'C:\Program Files\Microsoft\Exchange Server\v14\scripts\RedistributeActiveDatabases.ps1' -DagName MeineDAG -ShuffleActiveDatabase -showFinalDatabaseDistribution" –ExecutionPolicy unrestricted


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!



    • Bearbeitet Peter Kriegel Donnerstag, 22. November 2012 15:06
    • Als Antwort markiert DrHigh1973 Freitag, 23. November 2012 06:53
    Donnerstag, 22. November 2012 07:34
  • Hallo Robert,

    danke für die schnelle Hilfe, Deine Antwort hat mir sehr geholfen und für meine Zwecke absolut ausreichend.

    Gruß

    Sascha

    Freitag, 23. November 2012 06:55
  • Hallo Peter,

    auch Dir vielen Danke für Deine Hilfe, ins besondere für die ausführliche Erklärung.

    Gruß

    Sascha

    Freitag, 23. November 2012 06:57