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
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 }
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
).