skarden
Goto Top

Frage zu Exchangescript

Hallo,

ich habe da ein kleines Verständnisproblem. Ich möchte via Script Mailboxen als PST-Files exportieren.
Gebe ich in der Verwaltungsshell folgendes ein:

New-MailboxExportRequest -Mailbox Username -FilePath "\\exchange\e$\Username.pst"

so exportiert er mir fein säuberlich die entsprechende Mailbox in den angegebenen PST-File.
Schreibe ich selbigen Befehl bzw. um Abschreibefehler zu vermeiden kopiere ich die Zeile in eine Batchdatei, so bekomme ich die Fehlermeldung:

Der Befehl "New-MailboxExportRequest" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

Irgendwo muss ich da einen Denkfehler haben...ich weiss nur nicht welchen.
für einen Tipp wäre ich dankbar.

Danke und Gruß
Skarden

Content-ID: 169255

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

Ausgedruckt am: 05.11.2024 um 06:11 Uhr

Neomatic
Neomatic 06.07.2011 um 16:46:55 Uhr
Goto Top
Hallo,

ich bin jetzt nicht gerade ein Exchange Profi, aber sind die Befehle nicht eher für die Powershell gedacht?

Gruß

Neomatic
Snowman25
Snowman25 06.07.2011 um 16:51:05 Uhr
Goto Top
Hallo @Skarden,

Von wo startest du diese 'Verwaltungsshell'? Ich finde weder im Startmenü noch in den Verwaltungstools eine Verknüpfung oder eine Funktion, um eine besondere Shell zu öffnen.
Deine Batch wird höchstwahrscheinlich am falschen Ort ausgeführt. Also in dem Verzeichnis, in dem die Batch liegt. Hier sind aber nicht die Anwendungen vorhanden, die du nutzen möchtest (z.B. New-MailboxExportRequest..COM oder.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH). Liest sich außerdem eher wie Powershell-Kommandos.
Öffne deine Verwaltungsshell, führe Echo %cd% aus und schreib in die erste Zeile des Batchskripts, das du erstellen möchtest: pushd <Verzeichnis, das bei Echo %cd% herauskam>.
Mich würde auch interressieren, welcher Pfad das ist.

Gruß
Snow
Skarden
Skarden 06.07.2011 um 16:59:10 Uhr
Goto Top
Hallo,

auf dem Exchangeserver (2010) wird neben der ExchangeManagementConsole eine ExchangeManagementShell installiert btw verlinkt. diese Shell lädt beim starten diverse cmdlets.
Ein "echo %cd%" gibt keine Ausgabe auch auf einer alten Konsole nicht (cmd.exe)
Mit der Verwaltungsshell stehe ich ja in dem besagten Verzeichnis. Gebe ich den Befehl per Hand ein klappts, strate ich den über eine Batch kommt der Fehler. In der Batch steht auch nur die Befehlszeile drin und sonst nichts.

Gruß
Skarden
2hard4you
2hard4you 06.07.2011 um 18:33:11 Uhr
Goto Top
Moin,

das sollte Dir weiter helfen: http://msxfaq.de/e2007/managementshell.htm

und ja, es ist ein Powershell-Script face-smile

da sollte Dir die PowerGui weiterhelfen http://powergui.org/index.jspa

mit den entsprechenden Exchange-Powerpack - findest Du auch dort http://www.powergui.org/entry.jspa?categoryID=21&externalID=2662

Gruß

24
filippg
filippg 06.07.2011 um 20:22:34 Uhr
Goto Top
Hallo,

Gebe ich den Befehl per Hand ein klappts, strate ich den
über eine Batch kommt der Fehler.
Ja, ist doch klar. Hat auch Neomatic schon festgestellt: New-MailboxExportRequest ist ein PowerShell-cmdlet (bzw. ein cmdlet der Exchange-Erweiterung), und das gibt es in Batch-Dateien schlicht und einfach nicht. Und eine Batch-Datei wird immer im Windows-Kommandozeileninterpreter (cmd.exe) ausgeführt, auch wenn du sie aus einer Exchange Management Shell heraus startest.

http://technet.microsoft.com/en-us/library/bb123798.aspx erklärt dir, wie man aus einer Batch (oder Scheduled Task) heraus die PowerShell inkl. Exchange Management-PlugIns startet und darin ein PowerShell-Skript ausführt.

Gruß

Filipp
Snuffchen
Snuffchen 06.07.2011 um 20:36:33 Uhr
Goto Top
Das Problem ist, dass die Funktion New-MailboxExportRequest und New-MailboxImportRequest nur dann verfügbar sind, wenn der betreffende Account der die Powershell ausführt die Management-Rolle “Mailbox Import Export” hat.

Das kann man mit folgendem PowerShell-Befehl erreichen: New-ManagementRoleAssignment –Role “Mailbox Import Export” –User “Username”

Danach die Exchangeverwaltungsshell schließen und neu aufrufen, dann sollte das einwandfrei klappen.
filippg
filippg 06.07.2011 um 20:54:08 Uhr
Goto Top
Das Problem ist, dass die Funktion New-MailboxExportRequest und New-MailboxImportRequest nur dann verfügbar sind, wenn der
betreffende Account der die Powershell ausführt die Management-Rolle “Mailbox Import Export” hat.
Genau! Deswegen geht es ja auch, wenn man es "direkt" macht, aber nicht, wenn man es in eine Batch packt. Batch-Dateien werden nämlich bekanntlich unter dem Builtin-Account LOCAL\BATCHUSER ausgeführt!
Snuffchen
Snuffchen 06.07.2011 um 21:14:49 Uhr
Goto Top
Dann sollte man dem Batchuser direkt mal die Management-Rolle hinzufügen und das Ganze austesten.
filippg
filippg 06.07.2011 um 22:38:14 Uhr
Goto Top
Dann sollte man dem Batchuser direkt mal die Management-Rolle hinzufügen und das Ganze austesten.
Jaja, unbedingt. Wobei natürlich der Account nur lokal "LOCAL\BATCHUSER" heißt. Der wird dann beim Hinzufügen in die Domäne allerdings maskiert und heißt dort einfach "EVERYONE". Also: am besten "EVERYONE" zum Exchange-Org-Admin machen, dann geht das auch mit Batch und Mailboxexport. Alternativ kann man natürlich auch "ANONYMUOUS USER" nehmen. Aber dann sinkt die Performance, weil alle Zugriffe erst noch anonymisiert werden. Ist dafür natürlich besser für den Datenschutz.
Skarden
Skarden 07.07.2011 um 10:59:27 Uhr
Goto Top
Hallo,

wo ist hier ein Wald? Da stehen leider die ganzen Bäume davor.
Das mit dem Batchscript ist natürlich die Lösung. Ich werde das ganze als Powershellscript schreiben und dann sollte es auch gehen.

Ich danke für die Hilfe.

Gruß
Skarden
Snowman25
Snowman25 07.07.2011 um 11:06:16 Uhr
Goto Top
Lass dich nicht von @filippg und @Snuffchen irritieren. Die letzten 3 Beiträge von den beiden sind reine Troll-comments. Wobei es @filippg eigentlich besser wissen sollte...

Gruß
Snow
filippg
filippg 07.07.2011 um 16:01:01 Uhr
Goto Top
Ich gebe zu: ab 20:54 bin ich i.A. nicht mehr ernst zu nehmen. Aber ich hatte gehofft, das wäre für jeden zu erkennen.
20:22 ist mein voller Ernst.
Unterschiedliche Accounts werden erst interessant, wenn du eben nicht mehr selbst ausführst (per Doppelklick), sondern einen Scheduled Task erstellst - darum ging es hier aber gar nicht.