ankhmorpork
Goto Top

Powershell, was genau macht -join?

Hallo zusammen,

irgendwie habe ich wohl den Anschluss verloren. Habe das folgende Schnippelchen ausgegraben und versucht nachzuvollziehen. Bis auf eine Kleinigkeit ist es mir gelungen.
Das abschließende join will sich mir nicht direkt erschließen. Vielleicht bin ich mittlerweile einfach sehgeschädigt.
Was genau wird hier zusammengefügt? Vermutlich alle zuvor generierten Zeilen ... aber müssen die auch "vertikal" zusammengefügt weden? So, dass eine Art "Block" entsteht? Die ForEach-Object Schleife wird ja komplett abgearbeitet, bevor das join zuschlägt.

Was passiert, wenn man es wegläßt, habe ich gesehen. Ich verstehe nur nicht ganz, warum es so passiert. Kann da wer erleuchten?

(("1*0x26*1x3*2x4*3x1*4x1*2x2*1x1*2x1*4x4*3x3*2x21*1x1*0x20*1x1*2x2*4x3*5x5*6x2*7x6*1x2*8x5*6x3*5x2*4x1*2x15*1x1*0x17*1x1*2x1*4x1*5x10*6x2*7x1*1x1*9x4*1x1*10x1*1x2*8x10*6x1*5x1*4x1*2x13*1x1*0x16*1x1*4x12*6x2*7x2*1x1*11x1*8x2*5x1*7x1*11x2*1x2*8x12*6x1*4x11*1x1*0x14*1x1*2x1*7x12*6x2*7x3*1x1*9x1*12x2*13x1*14x1*10x3*1x2*8x12*6x1*8x1*2x9*1x1*0x14*1x1*7x13*6x2*9x4*1x2*8x2*7x5*1x2*10x13*6x1*8x9*1x1*0x12*1x1*4x15*6x2*8x4*1x1*9x2*15x1*10x4*1x2*7x15*6x1*4x7*1x1*0x11*1x1*4x17*6x2*8x2*1x1*7x1*1x2*16x1*1x1*8x2*1x2*7x17*6x1*4x7*1x1*0x10*1x1*4x19*6x2*8x1*7x6*1x1*8x2*7x19*6x1*4x5*1x1*0x9*1x1*2x1*6x1*7x1*11x10*6x1*7x1*8x6*6x1*9x3*1x1*7x1*8x3*1x1*10x6*6x1*7x1*8x10*6x1*11x1*8x1*6x1*2x5*1x1*0x9*1x1*11x1*7x1*1x1*11x1*6x1*7x1*8x1*6x1*7x1*8x1*6x1*7x1*8x1*7x2*1x1*8x1*6x1*7x1*8x2*6x1*8x2*1x1*11x2*1x1*11x2*1x1*7x2*6x1*7x1*8x1*6x1*7x2*1x1*8x1*7x1*8x1*6x1*7x1*8x1*6x1*7x1*8x1*6x1*11x1*1x1*8x1*11x5*1x1*0x9*1x1*17x2*1x1*11x1*7x2*1x1*16x2*1x1*16x2*1x1*17x3*1x1*16x2*1x1*8x1*6x1*8x1*11x1*1x1*11x2*1x1*11x1*1x1*11x1*7x1*6x1*7x2*1x1*16x3*1x1*17x2*1x1*16x2*1x1*16x2*1x1*8x1*11x2*1x1*18x5*1x1*0x13*1x1*17x3*1x1*17x2*1x1*17x6*1x1*17x2*1x1*7x1*1x1*11x1*1x1*11x2*1x1*11x1*1x1*11x1*1x1*8x3*1x1*17x6*1x1*17x2*1x1*17x3*1x1*17x7*1x1*0x29*1x1*9x2*1x1*11x1*1x1*11x2*1x1*11x1*1x1*11x2*1x1*10x25*1x1*0x4*1x1*19x1*20x1*15x1*17x1*21x1*1x1*22x1*20x1*23x1*1x1*24x1*25x1*21x1*22x1*23x1*26x1*27x1*28x1*27x1*28x1*27x3*1x2*2x1*8x1*1x1*11x1*1x1*11x2*1x1*11x1*1x1*11x1*1x1*7x2*2x1*1x1*29x1*15x1*30x1*31x1*32x2*33x1*28x1*1x1*22x1*15x1*23x1*34x1*32x2*35x1*36x1*37x1*38x1*25x1*39x1*40x1*41x1*42x1*15x1*38x1*0x27*1x1*9x3*43x1*9x3*16x1*10x1*9x3*16x1*10x3*43x1*10x6*1x1*0x22*1x1*20x2*22x1*44x1*13x2*7x1*44x1*15x1*45x1*23x1*26x1*22x1*15x1*23x1*41x1*45x1*15x1*26x1*46x1*44x1*26x1*23x2*21x1*41x1*42x1*15x1*38x1*0" -split "x") -split "x"|%{ if ($_ -match "(\d+)\*(\d+)") { "$([char][int]("10T32T95T61T45T94T35T47T92T40T41T124T62T58T60T111T86T39T44T87T104T115T116T101T77T97T114T63T33T84T69T78T117T70T110T102T64T103T109T105T108T46T99T118T112T119T100" -split "T")[$matches[2]])" * $matches[1] } }) -join ""  

Glück auf!

ANKH

P.S. Ist schon ein wenig verspielt der Code ...

Content-Key: 239436

Url: https://administrator.de/contentid/239436

Ausgedruckt am: 29.03.2024 um 11:03 Uhr

Mitglied: sk-it83
sk-it83 28.05.2014 um 08:49:38 Uhr
Goto Top
Guten Morgen,

kann zwar diesen Code nicht interpretieren, aber hier steht was ein join macht:

http://technet.microsoft.com/en-us/library/hh847757.aspx

Also kurz und knapp, es wird aus einer mehreren Zeichenfolgen, eine Zeichenfolge.


VG
Mitglied: AnkhMorpork
AnkhMorpork 28.05.2014 um 08:52:54 Uhr
Goto Top
Zitat von @sk-it83:

Guten Morgen,

kann zwar diesen Code nicht interpretieren, aber hier steht was ein join macht:

http://technet.microsoft.com/en-us/library/hh847757.aspx

Also kurz und knapp, es wird aus einer mehreren Zeichenfolgen, eine Zeichenfolge.


VG

Auch guten Morgen,

ja, das kenne ich. Ich dachte auch es verstanden zu haben, aber in diesem speziellen Fall geht es mir unter.

Trotzdem vielen Dank

Gruß

ANKH
Mitglied: colinardo
Lösung colinardo 28.05.2014 aktualisiert um 09:27:39 Uhr
Goto Top
Hallo Ankh,
der Code generiert zuerst die entsprechenden ASCII-Zeichen alle untereinander, dann werden alle Zeichen zum Schluss ohne Lücke aneinander gehängt, die Vertikalen Zeilenumbrüche generiert jeweils der entsprechende Charcode eines Zeichens welches sich auch in den generierten ASCII-Zeichen befindet.

Das doppelte -split "x" ist übrigens überflüssig.

Grüße Uwe
Mitglied: AnkhMorpork
AnkhMorpork 28.05.2014 aktualisiert um 09:24:34 Uhr
Goto Top
Zitat von @colinardo:

Hallo Ankh,
der Code generiert zuerst die entsprechenden ASCII-Zeichen alle untereinander, dann werden alle Zeichen zum Schluss ohne
Lücke aneinander gehängt, die Vertikalen Zeilenumbrüche generiert jeweils der entsprechende Charcode eines Zeichens
welches sich auch in den generierten ASCII-Zeichen befindet.

Das doppelte -split "x" ist übrigens überflüssig.

Grüße Uwe

Hallo Uwe,

vielen dank für die Erklärung.
Muss ich das so verstehen, dass die "Grafik", die hier generiert wird, nicht aus einer Matrix, sondern aus einer einzigen Zeile (mit Zeilenumbrüchen) besteht? So eine Art "eindimensionale Matrix"? (gute Chance für das nächste Unwort des Jahres)

Gruß

ANKH

Edit: Das mit dem doppelten Split "x" hatte ich auch schon. Ist ein wenig konfus.
Mitglied: colinardo
colinardo 28.05.2014 aktualisiert um 09:26:03 Uhr
Goto Top
Genau die Zeilenumbrüche sind mit Ihrem ASCII Code bereits enthalten.
Mitglied: AnkhMorpork
AnkhMorpork 28.05.2014 um 09:28:27 Uhr
Goto Top
Dann sage ich an dieser Stelle meinen besten Dank an den Meister und markiere es als gelöst.
Und wieder was gelernt ...

Gruß

ANKH