webentwicklung-frage-antwort-db.com.de

Listet alle zuvor geladenen PowerShell-Variablen auf

Gibt es einen PowerShell-Befehl zum Auflisten aller zuvor geladenen Variablen?

Ich führe einige PowerShell-Skripts in Visual Studio aus und möchte alle Variablen auflisten, die in der aktuellen PowerShell-Sitzung verfügbar sind.

Ich habe den Befehl ausprobiert:

ls variable:*;

Es wird jedoch Folgendes zurückgegeben:

System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
28
Zooking

ls variable:* sollte funktionieren, oder Get-Variable. Wenn dies zu einer schlechten Ausgabe führt, liegt dies an einem schlecht implementierten Host, nicht an Powershell. Wenn Sie den Standard-Konsolenhost öffnen ("powershell.exe" ausführen), werden Sie feststellen, dass diese ordnungsgemäß funktionieren.

Wenn Sie einen fehlerhaften Host umgehen müssen, haben Sie möglicherweise mehr Glück, wenn Sie alles auf explizite Zeichenfolgen ausgeben:

Get-Variable | Out-String

oder

Get-Variable |%{ "Name : {0}`r`nValue: {1}`r`n" -f $_.Name,$_.Value }
49
latkin

Interessanterweise können Sie einfach variable eingeben, und das funktioniert auch!

Ich habe das herausgefunden, weil ich neugierig war, was ls variable:* Tat. Get-Help ls Gibt an, dass es sich um einen Alias ​​für das Get-ChildItem von PowerShell handelt, von dem ich weiß, dass alle untergeordneten Elemente eines Objekts aufgelistet werden. Also versuchte ich es einfach mit variable und voila!

Basierend auf this und this scheint ls variable:* Zu sagen, dass es eine Art Bereichs-/Namespace-Lookup mit * (all/any) Platzhalter in der variable-Liste, der in diesem Fall irrelevant erscheint (ls variable:* == ls variable: == variable) .

5
Andrew