Jump to content

Pipe SamAccountname nach enable-mailbox


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

leider bin ich mit meinem PowerShell wissen noch am Anfang. Ich möchte folgendes erreichen:

Der Output von: get-user -identity "Max Mustermann" | fl SamAccountName

bringt mir meinen begehrtern SamaccountName. In meinem Fall ist der Output: Max.Mustermann

 

Jetzt möchte ich an folgenden Befehl Pipen: Enable-Mailbox -Database EDB01 -Alias $SamAccountName

 

Ich habe keine Ahnung, wie ich in einer Powershell Zeile es fertig bekomme dass dieses Motto funktioniert

get-Befehl | select WertA,WertbB | set-befehl -xy WertAVomGetBefehl

 

 

Für die E-Mail Adressen selbst läuft ja die die Adressrichtlinie. Aber mich kümmert der Alias. Bekomm ich einfach nicht sauber hin.

 

Hoffe Ihr seit da schlauer... Danke!

 

 

Link zu diesem Kommentar

Moin,

 

der Witz an den Pipes in der PowerShell besteht darin, dass man keine Texte bzw. Strings weitergibt (wie es bei anderen Shells der Fall ist), sondern ganze Objekte. Wenn ein Cmdlet also Piping akzeptiert, übernimmt es das ganze Objekt des vorhergehenden Kommandos und sucht sich die nötigen Werte quasi selbst raus. Sprich: Du musst den Accountnamen gar nicht isolieren. Das macht sich auch die Befehlsfolge von mikro zunutze, dort allerdings nicht per Piping, sondern mit Objektvariablen und einer Array-Schleife.

 

Gruß, Nils

 

Link zu diesem Kommentar

@Norbertfe ja das ist bei mir anders. Da kommt bei mir nur "nachname" raus. SAMAccountNAme ist bei mir perfekt da = vorname.nachname

 

 

@nilsk dann geht das also auch "einfacher" auch ohne schleife oder wie?

 

wie sieht dann ein Befehl motto: Get-BefehlA | set-befehlA -xy WertAVomGetBefehl

aus?

 

Ich habe nur CMD Batch Scripting hintergrund. Für mich ist PS ganz was anderes/neues. Wenn ich dich richtig verstehe, könnte ich alles was der "Get-BefehlA" raus bekommt im gepipten Befehl verwenden.

Aber wie wird der Wert vom Get-Befehl dann angesprochen? Da muss es doch ein Einleitungszeichen etc geben?

 

Wenn ich das richtig sehe ist das: $_.

oder versteh ich da was falsch?

bearbeitet von killtux
Link zu diesem Kommentar

Naja ohne zu wissen, wie du deine User so anlegst, schwer nachzuvollziehen. Wenn ich einen User anlege, dann hat der den Alias 1. Buchstabe Vorname.Nachname. Wenn das bei dir nicht so ist, müßte man es mal testen, woran das liegt. Alternativ dann eben wie oben angegeben vorgeben (nur war das bei mir bisher nie notwendig). Übrigens hast du mit dem SAMAccountName dann aber Pech, wenn deine User mehr als 20 Zeichen mit Vorname, Nachname und Punkt zustande bringen. ;) Und das ist gar nicht mal so selten.

Link zu diesem Kommentar

Hi,

 

evtl. wäre es einfacher den neuen User, sofern es um neue User geht, einfach direkt per New-Mailbox (https://docs.microsoft.com/en-us/powershell/module/exchange/mailboxes/new-mailbox?view=exchange-ps) anzulegen.

New-Mailbox -UserPrincipalName chris@contoso.com -Alias chris -Database "Mailbox Database 1" -Name ChrisAshton -OrganizationalUnit Users -Password $password -FirstName Chris -LastName Ashton -DisplayName "Chris Ashton" -ResetPasswordOnNextLogon $true

Gruß

Jan

Link zu diesem Kommentar

Hi NorbertFe,

 

ja, das mit den 20 Zeichen weiß ich. Mehr haben wir aber nirgends. Von daher egal. Geht mir aber im Grunde zwar jetzt um diesen Fall. Aber im Eigentlichen auch darum wie man generell ohne zu scripten einen Wert den ein Befehl ausgräbt an einen weiteren übergeben kann um ihn dort als "Variable zum setzen" verwendet oder wie auch immer man das nennen mag.

bearbeitet von killtux
Link zu diesem Kommentar

Jungs... wirklich Mega...

für alle die das gleiche brauchen wie ich... der Trick ist tatsächlich ein foreach zu machen.

 

Meine Fragebeispiel:

Get-BefehlA | set-befehlA -xy WertAVomGetBefehl

Wird zu Lösung:

Get-BefehlA | foreach {set-befehlA -xy $_.WertAVomGetBefehl}

 

Die Lösung meines Problems lautet daher:

Get-User –OrganizationalUnit "domain.local/ErsteOU/ZielOU" | foreach {Enable-Mailbox -identity $_.Name -Database EDB01 -Alias $_.SamAccountName}

 

einfach geil...danke danke für die Tipps an alle!

bearbeitet von killtux
Link zu diesem Kommentar

Moin,

 

wie oben schon gesagt, musst du dich bei den meisten Cmdlets gar nicht darum kümmern, welcher Wert denn da übergeben wird, solange das Cmdlet mit dem übergebenen Objekt klarkommt. Das funktioniert meistens.

 

Ich habe keine Testumgebung da, würde aber erwarten, dass es so geht:

Get-User -Identity "Max Mustermann" | Enable-Mailbox -Database MeineDB01

Da du dem zweiten Cmdlet ja einen User übergibst, braucht es nicht selbst per Alias oder wie auch immer nach dem User zu suchen, um den es geht.

 

EDIT: Dein letztes Beispiel geht zwar auch, ist aber unnötig umständlich. Du brauchst kein Foreach.

 

Gruß, Nils

 

bearbeitet von NilsK
Link zu diesem Kommentar

ja nilsk das geht schon.. aber ich möchte ja den Parameter Alias mit etwas "speziellen" füttern. Daher ist "mein" Befehl nötig :-)

Ansonsten macht er seinen "Standard" Alias.

vor 30 Minuten schrieb testperson:

Hi,

 

evtl. wäre es einfacher den neuen User, sofern es um neue User geht, einfach direkt per New-Mailbox (https://docs.microsoft.com/en-us/powershell/module/exchange/mailboxes/new-mailbox?view=exchange-ps) anzulegen.


New-Mailbox -UserPrincipalName chris@contoso.com -Alias chris -Database "Mailbox Database 1" -Name ChrisAshton -OrganizationalUnit Users -Password $password -FirstName Chris -LastName Ashton -DisplayName "Chris Ashton" -ResetPasswordOnNextLogon $true

Gruß

Jan

Hi, mag sein. Aber es geht mir nicht um neue User sondern über bestehende in Umgebungen die zuvor noch keinen Exchange hatten.

bearbeitet von killtux
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...