none
Set-Mailbox und Variablen RRS feed

  • Frage

  • Hi NG,

    setze mich gerade mit einem kleinen Problem in PS auseinander, wo ich nicht weiterkomme.

    Mit Get-Mailbox über gebe ich einen Wert (z´.B. SamAccountName)  in eine Variable und möchte im nächsten Schritt
    mit Set-Mailbox diese Variable für zum Besp. -Alias übernehmen/-geben. Leider akzeptiert anscheinend -Alias keine Variablen.

    Gibt es einen anderen Weg den Alias neu generieren zu lassen, bzw. wie werden Inhalte einer Variablen an -Alias sonst übergeben.

    Danke für Eure Hilfe.

    (Hintergrund: möchte mir ein kleines Script bauen, das den Exchange Alias eines Users (hier nat. hunderte v. Usern ) ändert,
    da diese nicht Exchangekonform sind.)


    Gruß Ralph Andreas Altermann | Microsoft Partner Regional Technical Communities, Hamburg | Bald - 4.ter Microsoft Partner Stammtisch Hamburg | Anmeldung/Registrierung unter http://www.xing.com/net/mpshh
    Donnerstag, 9. September 2010 16:33

Antworten

  • Hallo Andrei,

    danke Dir für den Befehlssyntax und damit Deine Idee / Ansatz, aber ...

    > Get-Mailbox | Foreach {Set-Mailbox -Identity $_.Identity -Alias ($_.SamAccountName).Replace(" ","")}

    der aber auch nicht funktionieren kann, da..

    Die Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausge
    führt werden.
        + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) [],
       PSInvalidOperationException
        + FullyQualifiedErrorId : RemotePipelineExecutionFailed

    aber mit ...

    > (Get-Mailbox) | Foreach {Set-Mailbox -Identity $_.Identity -Alias:($_.SamAccountName -Replace " ","")}

    gehts nun super.

    Damit ist der erste und wichtigste Teil geschafft, denke für Verteilergruppen, emailakt. Public Folders und Konakte sollte es
    dann auch funktionieren.

     @ Martin
         hihi, Faulheit hat doch gesiegt.


    Gruß Ralph Andreas Altermann | Microsoft Partner Regional Technical Communities, Hamburg | Bald - 4.ter Microsoft Partner Stammtisch Hamburg | Anmeldung/Registrierung unter http://www.xing.com/net/mpshh
    Montag, 13. September 2010 12:36

Alle Antworten

  • Hallo Andreas,

    theoretisch sollte es klappen:

    Get-Mailbox

    Poste evtl. das Script hier im Thread, damit wir uns das Problem genauer anschauen können.

    Gruß,
    Andrei

    Freitag, 10. September 2010 08:40
    Moderator
  • HuHu Andrei,

    danke Dir das Du mich zwischendurch mal dran nimmst. (PS: komme in Herbst auch wieder ins Forum, obwohl ja viele tolle MVPs unterwegs sind)

    Einen Teil meines Problemes konnte ich gestern in einer "nächtlichen Aktion" lösen:
     bei -Alias $Var fehlte der ":" danach wurde der Wert übergeben.

    Dein Ansatz ist auch nicht schlecht, nur läuft er auch nur explizit gegen einen User, was jetzt noch mein Problem ist,
    da ich viele User im Bulk aktualisieren muß. Mein Ansatz sieht als PS-Laie wie folgt aus:

    Mit:

     

    $Test = (Get-Mailbox e.tester).SamAccountName.ToString()

    und

    set-mailbox e.tester -alias:$test

     

    bekomme ich eszwar für einen User geregelt, aber im Bulk für alle User nach dem Motto

     

    Get-Mailbox | Set-Mailbox  …. bekomme ich es noch nicht hin

     

    Gruß

    Andreas


    Gruß Ralph Andreas Altermann | Microsoft Partner Regional Technical Communities, Hamburg | Bald - 4.ter Microsoft Partner Stammtisch Hamburg | Anmeldung/Registrierung unter http://www.xing.com/net/mpshh
    Freitag, 10. September 2010 09:51
  • Hi Andreas,

    cool, dass du bald wieder aktiver wirst...trotz der vielen tollen MVPs hier ;-). Für einen Batzen von Usern würde sich eine CSV-Datei in Verbindung mit der PoSh eignen. Was muß denn bei den Aliasen der bestehenden User angepasst werden?

    Gruß

    Martin

    Freitag, 10. September 2010 13:02
  • Hi Martin,

    csv geht natürlich auch, nur dann muß ich ja über mehrere hunderte von Zeilen manuell anfassen :-(
    Dann könnte ich ja auch jeden User manuell in der EMC bearbeiten, aber ich bin doch faul :-)

    Nun, der Alias (mailnickname) im Gesamten, da Leerzeichen und andere Zeichen drin sind die Exchange 2010
    nicht mehr mag. (Halt eine Altlast)

    Dir ein Schönes Wochenende
    Gruß

    Andreas


    Gruß Ralph Andreas Altermann | Microsoft Partner Regional Technical Communities, Hamburg | Bald - 4.ter Microsoft Partner Stammtisch Hamburg | Anmeldung/Registrierung unter http://www.xing.com/net/mpshh
    Freitag, 10. September 2010 14:02
  • Hi Andreas,

    es gibt doch "copy and paste" ;-). Du kannst doch die Ausgabe von "get-mailbox" gezielt nach Aliasen filtern. Dann kannst doch den ausgegeben Krempel in eine CSV-Datei einfügen. Das erspart dir das mühevolle Eingeben... *seufz* Admins sind schon faule Säcke ;-).

    Danke,dir auch

    Gruß

    Martin

    Freitag, 10. September 2010 17:48
  • Hallo Andreas,

    also ich würde mir das Ganze etwas in der Richtung vorstellen:

    Get-Mailbox | Foreach {Set-Mailbox -Identity $_.Identity -Alias ($_.SamAccountName).Replace(" ","")}
    

    Replace sollte sich dann auch um evtl. Leerzeichen kümmern.

    Hoffe das hilft.

    Gruß,
    Andrei

    Montag, 13. September 2010 06:39
    Moderator
  • Hallo Andrei,

    danke Dir für den Befehlssyntax und damit Deine Idee / Ansatz, aber ...

    > Get-Mailbox | Foreach {Set-Mailbox -Identity $_.Identity -Alias ($_.SamAccountName).Replace(" ","")}

    der aber auch nicht funktionieren kann, da..

    Die Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausge
    führt werden.
        + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) [],
       PSInvalidOperationException
        + FullyQualifiedErrorId : RemotePipelineExecutionFailed

    aber mit ...

    > (Get-Mailbox) | Foreach {Set-Mailbox -Identity $_.Identity -Alias:($_.SamAccountName -Replace " ","")}

    gehts nun super.

    Damit ist der erste und wichtigste Teil geschafft, denke für Verteilergruppen, emailakt. Public Folders und Konakte sollte es
    dann auch funktionieren.

     @ Martin
         hihi, Faulheit hat doch gesiegt.


    Gruß Ralph Andreas Altermann | Microsoft Partner Regional Technical Communities, Hamburg | Bald - 4.ter Microsoft Partner Stammtisch Hamburg | Anmeldung/Registrierung unter http://www.xing.com/net/mpshh
    Montag, 13. September 2010 12:36
  • Hallo Andreas,

    ah, in der Testumgebung hatte es mit dem Code geklappt. Na ja, Hauptsache ist, dass es jetzt funktioniert :-)

    Viele Grüße,
    Andrei

    Montag, 13. September 2010 12:58
    Moderator
  • Die Hilfe beschreibt es:

    [...] 

    -------------------------- BEISPIEL 3 --------------------------

     C:\PS>(get-content Notice.txt) | foreach-object {$_ -replace "Warning", "Caution"} | set-content Notice.txt


     Beschreibung
     -----------
     Mit diesem Befehl werden alle Vorkommen von "Warning" in der Datei "Notice.txt" durch "Caution" ersetzt.

     Mit dem Cmdlet "Get-Content" wird der Inhalt von "Notice.txt" abgerufen. Mit dem Pipelineoperator werden die Ergebn
     isse an das Cmdlet "ForEach-Object" übergeben. Dieses wendet den Ausdruck auf die einzelnen Inhaltszeilen in "Get-C
     ontent" an. Im Ausdruck wird mit dem Symbol "$_" auf das aktuelle Element verwiesen, und mit dem Replace-Parameter
     wird der zu ersetzende Text angegeben.

     Ein weiterer Pipelineoperator übergibt den geänderten Inhalt an Set-Content, wodurch der Text in "Notice.txt" durch
      den neuen Inhalt ersetzt wird.

     Durch die runden Klammern um den Befehl "Get-Content" wird sichergestellt, dass der Get-Vorgang abgeschlossen ist,
     bevor mit dem Set-Vorgang begonnen wird. Ohne die Klammern verursacht der Befehl einen Fehler, da beide Funktionen
     versuchen, auf die gleiche Datei zuzugreifen.

    [...]

    Gruß

    Andreas


    Gruß Ralph Andreas Altermann | Microsoft Partner Regional Technical Communities, Hamburg | Bald - 4.ter Microsoft Partner Stammtisch Hamburg | Anmeldung/Registrierung unter http://www.xing.com/net/mpshh
    Montag, 13. September 2010 13:07
  • ok, kann es nach mehreren Tests auch in der (5 Benutzer-) Testumgebung bestätigen. Obwohl die meißten Versuche keine Fehlermeldung brachten, ist es jetzt eindeutig, dass es reiner Zufall war, dass die beiden Cmdlets nicht gleichzeitig ausgeführt wurden.

    Montag, 13. September 2010 14:53
    Moderator