Подтвердить что ты не робот

Список всех ранее загруженных переменных 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
4b9b3361

Ответ 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).