Benutzer mit den meisten Antworten
Newbee Frage, Unterschied Objekt unter Hochkomma

Frage
-
hallo zusammen,
ich habe irgendwann gelesen, das man innerhalb eines Hochkomma mehrere Variablen angeben kann.
wo liegt hier der Unterschied:
$processes = Get-Process foreach($item in $processes){ $item.processname "$item.processname" # erzeugt System.Diagnostics.Process (WUDFHost).processname $r = $item.ProcessName # wenn ich es vorher zuweise kann man es auch unter Hochkomma stellen "$r, $r" # hat sicher etwas mit PS Parsern zu tun. }
- Bearbeitet Dont - Worry Mittwoch, 1. April 2020 14:04
Antworten
-
Moin,
wenn Du innerhalb eines Strings Properties expandieren möchtest (oder z.B. Text direkt im Anschluss an den Wert einer Variablen ausgeben möchtest), nimm den zu expandierenden Ausdruck einfach in $():
$var = "abc" "xxx$var" # ergibt xxxabc "xxx$varxxx" # ergibt xxx, da $varxxx ja leer ist "xxx$($var)xxx" # ergibt xxxabcxxx "xxx$var.xxx" # ergibt xxxabc.xxx $var = Get-Process lasss "xxx$var.idxxx" # ergibt xxxSystem.Diagnostics.Process (lsass).idxxx "xxx$(var.id)xxx" # ergibt xxx<Prozess-ID>xxx
Noch effizienter ist die Ersetzung mit Platzhaltern:
"xxx{0]xxx{1]yyy" -f $var.ID, $var.ProcessName
Evgenij Smirnov
- Als Antwort markiert Dont - Worry Mittwoch, 1. April 2020 16:41
Alle Antworten
-
Moin,
wenn Du innerhalb eines Strings Properties expandieren möchtest (oder z.B. Text direkt im Anschluss an den Wert einer Variablen ausgeben möchtest), nimm den zu expandierenden Ausdruck einfach in $():
$var = "abc" "xxx$var" # ergibt xxxabc "xxx$varxxx" # ergibt xxx, da $varxxx ja leer ist "xxx$($var)xxx" # ergibt xxxabcxxx "xxx$var.xxx" # ergibt xxxabc.xxx $var = Get-Process lasss "xxx$var.idxxx" # ergibt xxxSystem.Diagnostics.Process (lsass).idxxx "xxx$(var.id)xxx" # ergibt xxx<Prozess-ID>xxx
Noch effizienter ist die Ersetzung mit Platzhaltern:
"xxx{0]xxx{1]yyy" -f $var.ID, $var.ProcessName
Evgenij Smirnov
- Als Antwort markiert Dont - Worry Mittwoch, 1. April 2020 16:41
-
danke für die sehr hilfreiche Info.
hier hat sich ein kleiner Fehler einschlichen:
"xxx$(var.id)xxx" # ergibt xxx<Prozess-ID>xxx
"xxx$($var.id)xxx" # ergibt xxx<Prozess-ID>xxx
und den Fehler finde ich leider nicht
PS H:\> "xxx{0]xxx{1]yyy" -f $var.ID, $var.ProcessName
Fehler beim Formatieren einer Zeichenfolge: Die Eingabezeichenfolge hat das falsche Format..
In Zeile:1 Zeichen:1
+ "xxx{0]xxx{1]yyy" -f $var.ID, $var.ProcessName
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (xxx{0]xxx{1]yyy:String) [], RuntimeException
+ FullyQualifiedErrorId : FormatError