Speichern Sie den Ergebniswert eines Cmdlets in einer Variablen in Powershell

8

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%     
Lgn 09.04.2012, 12:03
quelle

2 Antworten

19

Verwenden Sie das -ExpandProperty -Flag von Select-Object

%Vor%

Aktualisieren, um die andere Frage zu beantworten:

Beachten Sie, dass Sie auch einfach auf die Eigenschaft zugreifen können:

%Vor%

Also um mehrere davon in Variablen zu bekommen:

%Vor%     
manojlds 09.04.2012, 12:44
quelle
2

Greifen Sie einfach auf die Eigenschaft Priority des aus der Pipeline zurückgegebenen Objekts zu:

%Vor%

(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 ):

%Vor%

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.

    
Richard 09.04.2012 13:41
quelle

Tags und Links