Ich möchte ein Cmdlet ausführen und den Wert des Ergebnisses in einer Variablen speichern.
Zum Beispiel
%Vor%Es listet Prioritäten mit einem Header auf. Der erste zum Beispiel:
%Vor%Wie kann ich sie in einer Variablen speichern? Ich habe es versucht:
%Vor% Jetzt ist die Variable: @{Priority=8}
und ich wollte, dass es 8
ist.
Frage 2:
Kann ich zwei Variablen mit einem Cmdlet speichern? Ich meine, speichern Sie es nach der Pipeline.
%Vor%Ich möchte das vermeiden:
%Vor% Greifen Sie einfach auf die Eigenschaft Priority
des aus der Pipeline zurückgegebenen Objekts zu:
(Dies funktioniert nicht, wenn Get-WSManInstance
mehrere Objekte zurückgibt. 2 )
Für die zweite Frage: Um zwei Eigenschaften zu erhalten, gibt es mehrere Optionen, die einfachste ist wahrscheinlich eine eine Variable *, die ein Objekt mit zwei separaten Eigenschaften enthält:
%Vor%und dann verwenden, nur einen Prozess vorausgesetzt:
%Vor%und
%Vor% Wenn mehrere Prozesse vorhanden sind, wird $var
ein Array sein, das Sie indizieren können, um die Eigenschaften des ersten Prozesses zu erhalten (unter Verwendung der Array-Literalsyntax @(...)
, so dass es immer eine Sammlung 1 ):
und dann verwenden:
%Vor% 1 PowerShell hilfreich für die Befehlszeile, aber nicht so hilfreich in Skripten hat einige zusätzliche Logik beim Zuweisen des Ergebnisses einer Pipeline zu einer Variablen: wenn keine Objekte zurückgegeben werden dann $null
einstellen, Wenn einer zurückgegeben wird, wird das Objekt zugewiesen, andernfalls wird ein Array zugewiesen. Durch das Erzwingen eines Arrays wird ein Array mit null, einem oder mehreren Elementen zurückgegeben.
2 Diese Änderung in PowerShell V3 (zum Zeitpunkt des Schreibens in Release Candidate) führt bei Verwendung einer member -Eigenschaft für ein Array von Objekten zu einem Array mit dem Wert dieser Eigenschaften.
Tags und Links powershell