Większość standardowych zmiennych można znaleźć w System.Management.Automation.SpecialVariables
. Jeśli odfiltrować te i małą listę innych znanych zmiennych, można utworzyć wielokrotnego użytku funkcji, aby zdefiniowane przez użytkownika zmienne:
function Get-UDVariable {
get-variable | where-object {(@(
"FormatEnumerationLimit",
"MaximumAliasCount",
"MaximumDriveCount",
"MaximumErrorCount",
"MaximumFunctionCount",
"MaximumVariableCount",
"PGHome",
"PGSE",
"PGUICulture",
"PGVersionTable",
"PROFILE",
"PSSessionOption"
) -notcontains $_.name) -and `
(([psobject].Assembly.GetType('System.Management.Automation.SpecialVariables').GetFields('NonPublic,Static') | Where-Object FieldType -eq ([string]) | ForEach-Object GetValue $null)) -notcontains $_.name
}
}
$a = 5
$b = 10
get-udvariable
Name Value
---- -----
a 5
b 10
Uwaga: W ISE Istnieją dwa dodatkowe standardowe zmienne: $ psISE i $ psUnsupportedConsoleApplications
Myślałem o tym podejściu, ale wydawało się to równie dziwne w konsoli jak cokolwiek innego. Dobra robota! –