Список всех ранее загруженных переменных PowerShell
Есть ли команда PowerShell для перечисления всех ранее загруженных переменных?
Я запускаю несколько сценариев PowerShell в Visual Studio и хотел бы перечислить все переменные, доступные в текущем сеансе PowerShell.
Я попробовал команду:
ls variable:*;
Но он возвращает следующее:
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
Ответы
Ответ 1
ls variable:*
должен работать, или Get-Variable
. Если они приводят к плохому результату, это связано с плохо реализованным хостом, а не с самой PowerShell. Если вы откроете стандартный консольный хост (запустите powershell.exe), вы увидите, что они работают нормально.
Если вам нужно обойти плохой хост, вам может быть лучше удалиться все в явные строки:
Get-Variable | Out-String
или
Get-Variable |%{ "Name : {0}`r`nValue: {1}`r`n" -f $_.Name,$_.Value }
Ответ 2
Интересно, что вы можете просто набрать variable
, и это тоже работает!
Я понял это, потому что мне было любопытно, что делает ls variable:*
. Get-Help ls
сообщает нам, что это псевдоним для PowerShell Get-ChildItem, который, как я знаю, перечислит все дочерние объекты Object. Итак, я попробовал просто variable
и voila!
Основываясь на этом и this, кажется, что ls variable:*
делает это, чтобы сделать какой-то поиск области/пространства имен, используя подстановочный символ *
(all/any) в списке variable
, который в этом случае кажется посторонним (ls variable:*
== ls variable:
= = variable
).