none
Mailbox über Powershell erstellen RRS feed

  • Frage

  • Hallo!

    Iich habe ien komisches Problem. Ich habe auf einem Windows 2008R2 Server die MS Exchange 2010 console installiert. Nun möchte ich mithilfe eines java Programmes und powershell postfächer für Benutzer erstellen.

    Dafür habe ich folgendes PS Script geschrieben:

    function createMail { Add-PSSnapin -Name 'Microsoft.Exchange.Management.PowerShell.E2010'; Enable-Mailbox -Identity '%username%' -Alias '%username%' -Database '%exdatabase%'};createMail 2>&1 | tee -filePath c:\\error.txt;
    

    Wenn ich nun die platzhalter %username% und %exdatabase% durch richtige Werte ersetze und dann mithilfe von Start -> ausführen -> powershell.exe dann wird das Postfach ohne Fehler angelegt.

    Wenn ich den selben Befehl mithilfe des Java Programmes ausführe bekomme ich folgende Fehlermeldung in die error.txt Datei:

    Add-PSSnapin : Es wurden keine Snap-Ins für die Windows PowerShell-Version 2 re
    gistriert.
    Bei Zeile:1 Zeichen:35
    + function createMail { Add-PSSnapin <<<< -Name 'Microsoft.Exchange.Management
    .PowerShell.E2010'; Enable-Mailbox -Identity 'spektrum027' -Alias 'spektrum027'
     -Database 'Mailbox Database Schueler'};createMail 2>&1 | tee -filePath c:\erro
    r.txt;
      + CategoryInfo     : InvalidArgument: (Microsoft.Excha...owerShell.E2 
      010:String) [Add-PSSnapin], PSArgumentException
      + FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.Ad 
      dPSSnapinCommand
     
    Die Benennung "Enable-Mailbox" wurde nicht als Name eines Cmdlet, einer Funktio
    n, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie 
    die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), u
    nd wiederholen Sie den Vorgang.
    Bei Zeile:1 Zeichen:106
    + function createMail { Add-PSSnapin -Name 'Microsoft.Exchange.Management.Power
    Shell.E2010'; Enable-Mailbox <<<< -Identity 'spektrum027' -Alias 'spektrum027'
     -Database 'Mailbox Database Schueler'};createMail 2>&1 | tee -filePath c:\erro
    r.txt;
      + CategoryInfo     : ObjectNotFound: (Enable-Mailbox:String) [], Comm 
      andNotFoundException
      + FullyQualifiedErrorId : CommandNotFoundException
     
    

    Sowohl das Java Programm wie auch das Powershell Programm laufen unter Administrator. Woran kann das legen. Ich lege mit diesem java Programm auch ohne Probleme User im AD and oder ändere Ad User. Alles funktioniert wunderbar nur nicht die Postfacherstellung.

     

    Kann mit jemand helfen?

    Florian

    Dienstag, 30. November 2010 19:52

Antworten

  • Moin,

    ich werfe mal meine riesige Glaskugel an und rate:

    Dein Java-Programm ist ein 32-Bit-Programm und startet damit die PowerShell x86. Die Exchange-Werkzeuge sind 64-Bit-Programm und gehen nur in de 64-Bit-Powershell.

    Und bevor Du fragst: Es ist nicht so einfach möglich, mit einer 32-Bit-Anwendung die 64-Bit-Powershell zu starten, da diese im System32-Verzeichnis liegt und Windows Deinem Java-Programm ein anderes System32-Verzeichnis anzeigt (SysWOW64).


    Grüße aus Berlin schickt Robert
    MVP Exchange Server
    Mittwoch, 1. Dezember 2010 18:07

Alle Antworten

  • Hi Florian,

    function createMail { Add-PSSnapin -Name 'Microsoft.Exchange.Management.PowerShell.E2010'; Enable-Mailbox -Identity '%username%' -Alias '%username%' -Database '%exdatabase%'};createMail 2>&1 | tee -filePath c:\\error.txt;

    OK, meine erste Vermutung, dass du nicht an die Verwaltungsshelle gedacht hast
    ist dahin ... hast du ...

      + CategoryInfo     : InvalidArgument: (Microsoft.Excha...owerShell.E2   010:String) [Add-PSSnapin], PSArgumentException
      + FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.Ad   dPSSnapinCommand

    Er hat mit dem Einbinden der Powershellbefehle ein Problem und "-name" ist
    glaube ich nicht nötig. Probier es mal mit
    function createMail { Add-PSSnapin
    Microsoft.Exchange.Management.PowerShell.E2010; Enable-Mailbox -Identity
    '%username%' -Alias '%username%' -Database '%exdatabase%'};createMail 2>&1|
    tee -filePath c:\\error.txt;

    Alternativ binde die Exchange Befehle schon beim Starten der Powershell mit
    ein (schau dir deinen EMS-Link an):
    powershell.exe -noexit -command ". 'C:\Program Files\Microsoft\Exchange
    Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto"

    Als nächstes könntest du auch im Powershell-Profil hinterlegen, dass beim
    Start die Exchangebefehle geladen werden sollen:
    http://www.kloep.it/index.php?option=com_content&view=article&id=198:einbinden-der-exchange-verwaltungsshell-in-die-windows-powershell&catid=41:exchange-server-2010&Itemid=32

    Viele Grüße
    Christian

    Mittwoch, 1. Dezember 2010 07:32
    Moderator
  • Moin,

    ich werfe mal meine riesige Glaskugel an und rate:

    Dein Java-Programm ist ein 32-Bit-Programm und startet damit die PowerShell x86. Die Exchange-Werkzeuge sind 64-Bit-Programm und gehen nur in de 64-Bit-Powershell.

    Und bevor Du fragst: Es ist nicht so einfach möglich, mit einer 32-Bit-Anwendung die 64-Bit-Powershell zu starten, da diese im System32-Verzeichnis liegt und Windows Deinem Java-Programm ein anderes System32-Verzeichnis anzeigt (SysWOW64).


    Grüße aus Berlin schickt Robert
    MVP Exchange Server
    Mittwoch, 1. Dezember 2010 18:07
  • Hallo!

    Du bist mir zuvorgekommen. Habe heute mir nochmals alles angeschaut und bin auf die selbe Ursache gestoßen, habe aber erst jetzt ins Forum geschaut. Auf dem Server war die 32bit Version von JVM installiert und nicht die 64bit Version. Habe jetzt die 32bit Version deinstalliert und die 64bit installiert und siehe das jetzt geht es. Das ist ja das schöne an Java, ob das Programm 32bit ist, oder 64bit ist, hängt meistens nur davon ab welche JVM installiert ist.

    Viele Grüße und Danke,

    Florian
    Donnerstag, 2. Dezember 2010 15:24
  • Hi Florian,

    schön, dass es geklappt hat und danke fürs Feedback!

    @Robert: An welchem Syntax hast du das erkannt ... oder hattest du das Problem
    schon? ;)

    Viele Grüße
    Christian

    Donnerstag, 2. Dezember 2010 16:19
    Moderator
  • Moin,

    @Florian: das ich kein Java-Programmierer bin, wusste ich nicht, dass sich das so leicht lösen lässt.

    @Christian: Ich scripte gerne (PowerShell und Exchange). Und ich benutze gerne den Totalcommander. Der ist leider nur 32-Bit. Was glaubst Du, wie oft ich darüber schon ein Script starten wollte und die o.g. Fehlermeldung lesen konnte... ;)


    Grüße aus Berlin schickt Robert
    MVP Exchange Server
    Donnerstag, 2. Dezember 2010 17:31