web-dev-qa-db-fra.com

Liste toutes les variables PowerShell précédemment chargées

Existe-t-il une commande PowerShell pour répertorier toutes les variables précédemment chargées?

J'exécute certains scripts PowerShell dans Visual Studio et je voudrais répertorier toutes les variables disponibles dans la session PowerShell actuelle.

J'ai essayé la commande:

ls variable:*;

Mais il renvoie ce qui suit:

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:* devrait fonctionner, ou Get-Variable. Si ceux-ci entraînent une mauvaise sortie, cela est dû à un hôte mal implémenté, pas à PowerShell lui-même. Si vous ouvrez l'hôte de console standard (exécutez powershell.exe), vous verrez que cela fonctionne correctement.

Si vous devez contourner un mauvais hôte, vous aurez peut-être plus de chance de tout vider dans des chaînes explicites:

Get-Variable | Out-String

ou

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

Fait intéressant, vous pouvez simplement taper variable, et cela fonctionne aussi!

J'ai compris cela parce que j'étais curieux de savoir ce que ls variable:* était en train de faire. Get-Help ls nous indique qu'il s'agit d'un alias pour Get-ChildItem de PowerShell, qui, je le sais, répertoriera tous les enfants d'un objet. J'ai donc essayé juste variable, et le tour est joué!

Sur la base de this et this , il semble que ce ls variable:* est en train de lui dire de faire une sorte de recherche de portée/espace de noms en utilisant le * (tout/tout) caractère générique sur la liste variable, qui, dans ce cas, semble étranger (ls variable:* == ls variable: == variable).

5
Andrew