Jump to content
Sign in to follow this  
killtux

Pipe SamAccountname nach enable-mailbox

Recommended Posts

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!

 

 

Share this post


Link to post
Share on other sites

Per Default wird der Alias eigentlich immer wie der SAMAccountName aussehen. Also eigentlich reicht enable-mailbox mueller -targetdatabase EDB01

Share this post


Link to post
Share on other sites

$user=get-User |where {$_.city -eq „Hamburg“}

foreach ($user in $user){enable-Mailbox $user.samaccountname -Database „dbname“}

 

Je nachdem ob du ein Where Objekt brauchst, kannst du es auch weglassen.

 

Gruß Mirko 

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

@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?

Edited by killtux

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Edited by killtux

Share this post


Link to post
Share on other sites
vor 3 Minuten schrieb killtux:

Mehr haben wir aber nirgends.

Ja das sagen alle, bis der erste mit so einem Namen kommt und einem das Namenskonzept um die Ohren fliegt. :) (Ja Nebenschauplatz). Für alles andere hast du ja jetzt ein Beispiel.

Share this post


Link to post
Share on other sites

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!

Edited by killtux
  • Like 1

Share this post


Link to post
Share on other sites

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

 

Edited by NilsK

Share this post


Link to post
Share on other sites

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.

Edited by killtux

Share this post


Link to post
Share on other sites

Wie schon gesagt, bei mir ist das nicht notwendig, deswegen kam ja meine Rückfrage. ;) Ich aktiviere alle meine User nur mittels enable-Mailbox m.mustermann (und ja der hat hinterher den Alias m.mustermann).

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...