Benutzer mit den meisten Antworten
out-string, join, verständnisfrage

Frage
-
moin,
wenn ich mit out-string einen String erhalte müsste ja eigentlich ein -join möglich sein. Wie müsste da die Syntax aussehen?
get-adgroupmember -id "GruppeX" | select samaccountname | out-string | gm TypeName: System.String
eine Lösung für das Problem habe ich - jedoch mit anderer Schreibweise. Mich hätte jedoch interessant warum out-string -join nicht erlaubt ist obwohl es bereits ein String ist bzw. wie man es schreiben müsste.
get-adgroupmember -id "GruppeX" | select samaccountname | out-string -join ","
Lösung mit anderer Syntax
(get-adgroupmember -id "GruppeX").samaccountname -join ","
Chris
Antworten
-
Hallo,
ganz einfach, out-string gibt dir genau einen String aus, mit -join kannst Du String_s_ verbinden.
$a = get-adgroupmember -id "GroupXYZ" | select samaccountname | Out-String $a[1] $a[2] s $a = (get-adgroupmember -id "GroupXYZ").samaccountname $a[1] MemberA $a[2] MemberB
Du kannst auch jeweils das Ergbnis von Get-Member -InputObject $a vergleichen, im ersten Fall ist es ein String, im zweiten ein Array mit String_s_
Beste Gruesse
brima
- Bearbeitet brima Donnerstag, 23. Februar 2017 08:37
- Als Antwort markiert -- Chris -- Donnerstag, 23. Februar 2017 12:14
-
Hallo,
Out-String -join ","
ist deshalb nicht erlaubt, weil Out-String keinen Parameter -join hat. Wenn du -join direkt hinter ein Cmdlet schreibst, wird es als Parameter interpretiert. Beachte auch die entsprechende Färbung in der ISE.
Wenn du -join als Operator verwenden willst, musst du mit Klammern anzeigen, dass es nicht mehr zum Cmdlet gehört:
( ... | Out-String) -join ","
Die ... stehen natürlich für deine vorherigen Befehle.
Viele Grüße
Christoph
- Als Antwort markiert -- Chris -- Donnerstag, 23. Februar 2017 12:14
-
wobei ( ... | Out-String) -join ","
keinen Sinn macht, weil die Klammer nach Auflösung wegen dem Out-String genau einen String liefert, also läuft der -join danach in leere.
Einfach mal vergleichen was raus kommt.(get-adgroupmember -id "GroupXYZ" | Select-Object samaccountname | Out-String) -join ',' (get-adgroupmember -id "GroupXYZ" | Select-Object samaccountname) -join ',' (get-adgroupmember -id "GroupXYZ" | Select-Object -ExpandProperty samaccountname) -join ',' (get-adgroupmember -id "GroupXYZ").samaccountname -join ','
Beste Gruesse
brima
- Bearbeitet brima Donnerstag, 23. Februar 2017 11:26
- Als Antwort markiert -- Chris -- Donnerstag, 23. Februar 2017 12:14
Alle Antworten
-
Hallo,
ganz einfach, out-string gibt dir genau einen String aus, mit -join kannst Du String_s_ verbinden.
$a = get-adgroupmember -id "GroupXYZ" | select samaccountname | Out-String $a[1] $a[2] s $a = (get-adgroupmember -id "GroupXYZ").samaccountname $a[1] MemberA $a[2] MemberB
Du kannst auch jeweils das Ergbnis von Get-Member -InputObject $a vergleichen, im ersten Fall ist es ein String, im zweiten ein Array mit String_s_
Beste Gruesse
brima
- Bearbeitet brima Donnerstag, 23. Februar 2017 08:37
- Als Antwort markiert -- Chris -- Donnerstag, 23. Februar 2017 12:14
-
Hallo,
Out-String -join ","
ist deshalb nicht erlaubt, weil Out-String keinen Parameter -join hat. Wenn du -join direkt hinter ein Cmdlet schreibst, wird es als Parameter interpretiert. Beachte auch die entsprechende Färbung in der ISE.
Wenn du -join als Operator verwenden willst, musst du mit Klammern anzeigen, dass es nicht mehr zum Cmdlet gehört:
( ... | Out-String) -join ","
Die ... stehen natürlich für deine vorherigen Befehle.
Viele Grüße
Christoph
- Als Antwort markiert -- Chris -- Donnerstag, 23. Februar 2017 12:14
-
wobei ( ... | Out-String) -join ","
keinen Sinn macht, weil die Klammer nach Auflösung wegen dem Out-String genau einen String liefert, also läuft der -join danach in leere.
Einfach mal vergleichen was raus kommt.(get-adgroupmember -id "GroupXYZ" | Select-Object samaccountname | Out-String) -join ',' (get-adgroupmember -id "GroupXYZ" | Select-Object samaccountname) -join ',' (get-adgroupmember -id "GroupXYZ" | Select-Object -ExpandProperty samaccountname) -join ',' (get-adgroupmember -id "GroupXYZ").samaccountname -join ','
Beste Gruesse
brima
- Bearbeitet brima Donnerstag, 23. Februar 2017 11:26
- Als Antwort markiert -- Chris -- Donnerstag, 23. Februar 2017 12:14
-
Nein, eine Klammer liefert prinzipiell überhaupt nichts. Es ist nur die Anweisung, den innenliegenden Teil zuerst abzuarbeiten.
Out-String gehört für mich zu den Cmdlets, die ich nie benutze, weil ich es irgendwie sinnlos finde. Wenn ein Objekt kein String ist, kann ich doch mit der ToString-Methode viel besser bestimmen, was ich genau als String herausbekomme.