killtux 11 Geschrieben 29. Mai 2018 Melden Teilen Geschrieben 29. Mai 2018 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! Zitieren Link zu diesem Kommentar
NorbertFe 2.035 Geschrieben 29. Mai 2018 Melden Teilen Geschrieben 29. Mai 2018 Per Default wird der Alias eigentlich immer wie der SAMAccountName aussehen. Also eigentlich reicht enable-mailbox mueller -targetdatabase EDB01 Zitieren Link zu diesem Kommentar
mikro 67 Geschrieben 29. Mai 2018 Melden Teilen Geschrieben 29. Mai 2018 $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 Zitieren Link zu diesem Kommentar
killtux 11 Geschrieben 29. Mai 2018 Autor Melden Teilen Geschrieben 29. Mai 2018 Die Befehle von @mikro gehen in die Richtung wie ich mir das gedacht hätte... das muss ich mir heute anschauen... Zitieren Link zu diesem Kommentar
NorbertFe 2.035 Geschrieben 29. Mai 2018 Melden Teilen Geschrieben 29. Mai 2018 Wie gesagt, normalerweise ist der Alias gleich dem SAMAccountname. Oder ist das bei dir anders? Zitieren Link zu diesem Kommentar
NilsK 2.937 Geschrieben 30. Mai 2018 Melden Teilen Geschrieben 30. Mai 2018 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 Zitieren Link zu diesem Kommentar
killtux 11 Geschrieben 30. Mai 2018 Autor Melden Teilen Geschrieben 30. Mai 2018 (bearbeitet) @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 30. Mai 2018 von killtux Zitieren Link zu diesem Kommentar
NorbertFe 2.035 Geschrieben 30. Mai 2018 Melden Teilen Geschrieben 30. Mai 2018 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. Zitieren Link zu diesem Kommentar
testperson 1.680 Geschrieben 30. Mai 2018 Melden Teilen Geschrieben 30. Mai 2018 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 Zitieren Link zu diesem Kommentar
killtux 11 Geschrieben 30. Mai 2018 Autor Melden Teilen Geschrieben 30. Mai 2018 (bearbeitet) 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 30. Mai 2018 von killtux Zitieren Link zu diesem Kommentar
NorbertFe 2.035 Geschrieben 30. Mai 2018 Melden Teilen Geschrieben 30. Mai 2018 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. Zitieren Link zu diesem Kommentar
killtux 11 Geschrieben 30. Mai 2018 Autor Melden Teilen Geschrieben 30. Mai 2018 (bearbeitet) 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 30. Mai 2018 von killtux 1 Zitieren Link zu diesem Kommentar
NilsK 2.937 Geschrieben 30. Mai 2018 Melden Teilen Geschrieben 30. Mai 2018 (bearbeitet) 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 30. Mai 2018 von NilsK Zitieren Link zu diesem Kommentar
killtux 11 Geschrieben 30. Mai 2018 Autor Melden Teilen Geschrieben 30. Mai 2018 (bearbeitet) 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 30. Mai 2018 von killtux Zitieren Link zu diesem Kommentar
NorbertFe 2.035 Geschrieben 30. Mai 2018 Melden Teilen Geschrieben 30. Mai 2018 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). Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.