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

Printed on: April 16, 2024 at 04:04 o'clock

Member: sk-it83
sk-it83 May 28, 2014 at 06:49:38 (UTC)
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
Member: AnkhMorpork
AnkhMorpork May 28, 2014 at 06:52:54 (UTC)
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
Member: colinardo
Solution colinardo May 28, 2014 updated at 07:27:39 (UTC)
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
Member: AnkhMorpork
AnkhMorpork May 28, 2014 updated at 07:24:34 (UTC)
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.
Member: colinardo
colinardo May 28, 2014 updated at 07:26:03 (UTC)
Goto Top
Genau die Zeilenumbrüche sind mit Ihrem ASCII Code bereits enthalten.
Member: AnkhMorpork
AnkhMorpork May 28, 2014 at 07:28:27 (UTC)
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