945 Stimmen

Wie kann ich in PowerShell Zeichenfolgen und Variablen verketten?

Nehmen wir an, ich habe das folgende Snippet:

$assoc = New-Object PSObject -Property @{
    Id = 42
    Name = "Slim Shady"
    Owner = "Eminem"
}

Write-Host $assoc.Id + "  -  "  + $assoc.Name + "  -  " + $assoc.Owner

Ich würde erwarten, dass dieser Ausschnitt dies zeigt:

42 - Slim Shady - Eminem

Aber stattdessen zeigt es:

42 + - + Slim Shady + - + Eminem

Das lässt mich glauben, dass die + Operator ist für die Verkettung von Zeichenketten und Variablen nicht geeignet.

Wie sollten Sie dies mit PowerShell angehen?

7voto

Carsten Punkte 963

Ich persönlich bevorzuge diesen Stil:

[string]::Join(' - ', 42, 'Slim Shady', 'Eminem')

oder auf der Grundlage eines beliebigen Objekts mit sogar unterschiedlichen Attributtypen:

$assoc = [psCustomObject][ordered]@{
    Id    = 42
    Name  = 'Slim Shady'
    Owner = 'Eminem'
}
[string]::Join(' - ',$assoc.psObject.Properties.value)

was zu diesem Ergebnis führt:

42 - Slim Shady - Eminem

5voto

Mordechai Punkte 678

Write-Host kann auch auf diese Weise verkettet werden:

Write-Host $assoc.Id" - "$assoc.Name" - "$assoc.Owner

Dies ist IMHO der einfachste Weg.

4voto

blayderunner123 Punkte 196
$assoc = @{
    Id = 34
    FirstName = "John"
    LastName = "Doe"
    Owner = "Wife"
}

$assocId = $assoc.Id
$assocFN = $assoc.FirstName
$assocLN = $assoc.LastName
$assocName = $assocFN, $assocLN -Join " "
$assocOwner = $assoc.Owner

$assocJoin = $assocId, $assocName, $assocOwner -join " - "
$assocJoin
#Output = 34 - John Doe - Wife

3voto

S. Melted Punkte 205

Wie bereits an anderer Stelle erwähnt, können Sie join verwenden.

Wenn Sie Befehle als Eingaben verwenden (wie ich), verwenden Sie die folgende Syntax:

-join($(Command1), "," , $(Command2))

Dies würde dazu führen, dass die beiden Ausgaben durch ein Komma getrennt werden.

Siehe https://stackoverflow.com/a/34720515/11012871 für entsprechende Kommentare

1voto

R.Amersfoort Punkte 85

J

$assoc.psobject.Properties.value -join " - "

B [ordered] :

$assoc = [pscustomobject] [ordered] @{
    Id = 42
    Name = "Slim Shady"
    Owner = "Eminem"
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X