PowerShell 3.0でのやり方ですね。
簡単に見ておきます。
変数の取得
現在の変数の取得には、コマンドレットが用意されています。
Get-Variable
あるいは、[PSDrive]のVariableで一覧取得もありですね。
Get-ChildItem variable:
ただ、これでは、ビルトイン変数とユーザー定義変数がごっちゃ混ぜになってしまいます。Get-Variable | select *やGet-ChildItem variable:では区別がつかないのでしょうか? つかないのです。
例えば$aを定義します。
$a = 0
Built-In変数と見比べてみてください。
Get-Variable | select * | sort Name #あるいは Get-ChildItem variable: | select * | sort Name
どうでしょうか。
PSPath : Microsoft.PowerShell.Core\Variable::a PSDrive : Variable PSProvider : Microsoft.PowerShell.Core\Variable PSIsContainer : False Name : a Description : Value : 0 Visibility : Public Module : ModuleName : Options : None Attributes : {}
PSPath : Microsoft.PowerShell.Core\Variable::? PSDrive : Variable PSProvider : Microsoft.PowerShell.Core\Variable PSIsContainer : False Value : True Name : ? Description : 最後のコマンドの実行状態。 Visibility : Public Module : ModuleName : Options : ReadOnly, AllScope Attributes : {} PSPath : Microsoft.PowerShell.Core\Variable::^ PSDrive : Variable PSProvider : Microsoft.PowerShell.Core\Variable PSIsContainer : False Name : ^ Description : Value : $a Visibility : Public Module : ModuleName : Options : None Attributes : {} PSPath : Microsoft.PowerShell.Core\Variable::ConsoleFileName PSDrive : Variable PSProvider : Microsoft.PowerShell.Core\Variable PSIsContainer : False Name : ConsoleFileName Description : 現在のコンソール ファイルの名前。 Value : Visibility : Public Module : ModuleName : Options : ReadOnly, AllScope Attributes : {}
そこで、今回の記事の内容が生きてきます。
ビルトイン変数のみを取得したい
ここに格納されています。
[psobject].Assembly.GetType('System.Management.Automation.SpecialVariables').GetFields('NonPublic,Static')
ただそのまま出してしまうと…ちょっと。
Name ---- HistorySizeVarPath MyInvocationVarPath OFSVarPath OutputEncodingVarPath VerboseHelpErrorsVarPath LogEngineHealthEventVarPath LogEngineLifecycleEventVarPath LogCommandHealthEventVarPath LogCommandLifecycleEventVarPath LogProviderHealthEventVarPath LogProviderLifecycleEventVarPath LogSettingsEventVarPath PSLogUserDataPath NestedPromptCounterVarPath CurrentlyExecutingCommandVarPath PSBoundParametersVarPath MatchesVarPath LastExitCodeVarPath PSDebugContextVarPath StackTraceVarPath FirstTokenVarPath LastTokenVarPath UnderbarVarPath QuestionVarPath ArgsVarPath ThisVarPath InputVarPath PSCmdletVarPath ErrorVarPath EventErrorVarPath PathExtVarPath PSEmailServerVarPath PSDefaultParameterValuesVarPath PSScriptRootVarPath PSCommandPathVarPath foreachVarPath switchVarPath PWDVarPath NullVarPath TrueVarPath FalseVarPath PSModuleAutoLoadingPreferenceVarPath DebugPreferenceVarPath ErrorActionPreferenceVarPath ProgressPreferenceVarPath VerbosePreferenceVarPath WarningPreferenceVarPath WhatIfPreferenceVarPath ConfirmPreferenceVarPath ErrorViewVarPath PSSessionConfigurationNameVarPath PSSessionApplicationNameVarPath AllScopeSessionVariables AutomaticVariables AutomaticVariableTypes PreferenceVariables PreferenceVariableTypes AllScopeVariables HistorySize MyInvocation OFS OutputEncoding VerboseHelpErrors LogEngineHealthEvent LogEngineLifecycleEvent LogCommandHealthEvent LogCommandLifecycleEvent LogProviderHealthEvent LogProviderLifecycleEvent LogSettingsEvent PSLogUserData NestedPromptLevel CurrentlyExecutingCommand PSBoundParameters Matches LastExitCode PSDebugContext StackTrace FirstToken LastToken PSItem Underbar Question Args This Input PSCmdlet Error EventError PathExt PSEmailServer PSDefaultParameterValues PSScriptRoot PSCommandPath foreach switch pwd Null True False PSModuleAutoLoading DebugPreference ErrorActionPreference ProgressPreference VerbosePreference WarningPreference WhatIfPreference ConfirmPreference ErrorView PSSessionConfigurationName PSSessionApplicationName ConsoleFileName ExecutionContext Home Host PID PSCulture PSHome PSUICulture PSVersionTable ShellId
型一覧の取得
まず、型を見てみましょう。
[psobject].Assembly.GetType('System.Management.Automation.SpecialVariables').GetFields('NonPublic,Static') ` | sort FieldType -Unique ` | select FieldType
System.Collections.Generic.List`1[System.String] System.Management.Automation.VariablePath System.String System.String[] System.Type[]
型毎に変数の取得
型ごとの変数を見てみると…
$fieldType = $specialVariables ` | sort FieldType -Unique $fieldType ` | %{ $type = $_ $specialVariables ` | ?{$_.FieldType -eq (iex ("[" +$_.FieldType +"]"))} ` | %{[PsCustomObject]@{userpath=$_.GetValue($null); type=$type}} ` | sort userpath -Unique }
ちょっと出力がはみ出たので、調整しています。
$fieldType = $specialVariables ` | sort FieldType -Unique $fieldType ` | %{ $type = $_ $specialVariables ` | ?{$_.FieldType -eq (iex ("[" +$_.FieldType +"]"))} ` | %{[PsCustomObject]@{ userpath=$_.GetValue($null) type=$type.ToString().Substring(0,18)}} ` | sort userpath -Unique }
userpath type -------- ---- $ System.Collections ? System.Collections {?, ConsoleFileName, ExecutionContext, false...} System.Collections ^ System.Collections _ System.Collections {_, args, this, input...} System.Collections args System.Collections ConfirmPreference System.Collections ConsoleFileName System.Collections {ConsoleFileName, ExecutionContext, HOME, Host...} System.Collections CurrentlyExecutingCommand System.Collections DebugPreference System.Collections {DebugPreference, VerbosePreference, ErrorActionPreference, WhatIfPref... System.Collections env:PATHEXT System.Collections error System.Collections ErrorActionPreference System.Collections ErrorView System.Collections ExecutionContext System.Collections false System.Collections foreach System.Collections global:$ System.Collections global:^ System.Collections global:error System.Collections global:LASTEXITCODE System.Collections global:NestedPromptLevel System.Collections global:PSModuleAutoLoadingPreference System.Collections global:PSSessionApplicationName System.Collections global:PSSessionConfigurationName System.Collections global:PWD System.Collections global:StackTrace System.Collections HOME System.Collections Host System.Collections input System.Collections LASTEXITCODE System.Collections local:args System.Collections local:foreach System.Collections local:input System.Collections local:switch System.Collections LogCommandHealthEvent System.Collections LogCommandLifecycleEvent System.Collections LogEngineHealthEvent System.Collections LogEngineLifecycleEvent System.Collections LogProviderHealthEvent System.Collections LogProviderLifecycleEvent System.Collections LogSettingsEvent System.Collections Matches System.Collections MaximumHistoryCount System.Collections MyInvocation System.Collections NestedPromptLevel System.Collections null System.Collections OFS System.Collections OutputEncoding System.Collections PID System.Collections ProgressPreference System.Collections PSBoundParameters System.Collections PSCmdlet System.Collections PSCommandPath System.Collections PSCulture System.Collections PSDebugContext System.Collections PSDefaultParameterValues System.Collections PSEmailServer System.Collections PSHOME System.Collections PSItem System.Collections PSLogUserData System.Collections PSModuleAutoLoadingPreference System.Collections PSScriptRoot System.Collections PSSessionApplicationName System.Collections PSSessionConfigurationName System.Collections PSUICulture System.Collections PSVersionTable System.Collections PWD System.Collections script:error System.Collections ShellId System.Collections StackTrace System.Collections switch System.Collections {System.Management.Automation.ActionPreference, System.Management.Auto... System.Collections {System.Object, System.Object[], System.Object, System.Object...} System.Collections this System.Collections true System.Collections VerboseHelpErrors System.Collections VerbosePreference System.Collections WarningPreference System.Collections WhatIfPreference System.Collections $ System.Management. ? System.Management. {?, ConsoleFileName, ExecutionContext, false...} System.Management. ^ System.Management. _ System.Management. {_, args, this, input...} System.Management. args System.Management. ConfirmPreference System.Management. ConsoleFileName System.Management. {ConsoleFileName, ExecutionContext, HOME, Host...} System.Management. CurrentlyExecutingCommand System.Management. DebugPreference System.Management. {DebugPreference, VerbosePreference, ErrorActionPreference, WhatIfPref... System.Management. env:PATHEXT System.Management. error System.Management. ErrorActionPreference System.Management. ErrorView System.Management. ExecutionContext System.Management. false System.Management. foreach System.Management. global:$ System.Management. global:^ System.Management. global:error System.Management. global:LASTEXITCODE System.Management. global:NestedPromptLevel System.Management. global:PSModuleAutoLoadingPreference System.Management. global:PSSessionApplicationName System.Management. global:PSSessionConfigurationName System.Management. global:PWD System.Management. global:StackTrace System.Management. HOME System.Management. Host System.Management. input System.Management. LASTEXITCODE System.Management. local:args System.Management. local:foreach System.Management. local:input System.Management. local:switch System.Management. LogCommandHealthEvent System.Management. LogCommandLifecycleEvent System.Management. LogEngineHealthEvent System.Management. LogEngineLifecycleEvent System.Management. LogProviderHealthEvent System.Management. LogProviderLifecycleEvent System.Management. LogSettingsEvent System.Management. Matches System.Management. MaximumHistoryCount System.Management. MyInvocation System.Management. NestedPromptLevel System.Management. null System.Management. OFS System.Management. OutputEncoding System.Management. PID System.Management. ProgressPreference System.Management. PSBoundParameters System.Management. PSCmdlet System.Management. PSCommandPath System.Management. PSCulture System.Management. PSDebugContext System.Management. PSDefaultParameterValues System.Management. PSEmailServer System.Management. PSHOME System.Management. PSItem System.Management. PSLogUserData System.Management. PSModuleAutoLoadingPreference System.Management. PSScriptRoot System.Management. PSSessionApplicationName System.Management. PSSessionConfigurationName System.Management. PSUICulture System.Management. PSVersionTable System.Management. PWD System.Management. script:error System.Management. ShellId System.Management. StackTrace System.Management. switch System.Management. {System.Management.Automation.ActionPreference, System.Management.Auto... System.Management. {System.Object, System.Object[], System.Object, System.Object...} System.Management. this System.Management. true System.Management. VerboseHelpErrors System.Management. VerbosePreference System.Management. WarningPreference System.Management. WhatIfPreference System.Management. $ System.String True ? System.String True {?, ConsoleFileName, ExecutionContext, false...} System.String True ^ System.String True _ System.String True {_, args, this, input...} System.String True args System.String True ConfirmPreference System.String True ConsoleFileName System.String True {ConsoleFileName, ExecutionContext, HOME, Host...} System.String True CurrentlyExecutingCommand System.String True DebugPreference System.String True {DebugPreference, VerbosePreference, ErrorActionPreference, WhatIfPref... System.String True env:PATHEXT System.String True error System.String True ErrorActionPreference System.String True ErrorView System.String True ExecutionContext System.String True false System.String True foreach System.String True global:$ System.String True global:^ System.String True global:error System.String True global:LASTEXITCODE System.String True global:NestedPromptLevel System.String True global:PSModuleAutoLoadingPreference System.String True global:PSSessionApplicationName System.String True global:PSSessionConfigurationName System.String True global:PWD System.String True global:StackTrace System.String True HOME System.String True Host System.String True input System.String True LASTEXITCODE System.String True local:args System.String True local:foreach System.String True local:input System.String True local:switch System.String True LogCommandHealthEvent System.String True LogCommandLifecycleEvent System.String True LogEngineHealthEvent System.String True LogEngineLifecycleEvent System.String True LogProviderHealthEvent System.String True LogProviderLifecycleEvent System.String True LogSettingsEvent System.String True Matches System.String True MaximumHistoryCount System.String True MyInvocation System.String True NestedPromptLevel System.String True null System.String True OFS System.String True OutputEncoding System.String True PID System.String True ProgressPreference System.String True PSBoundParameters System.String True PSCmdlet System.String True PSCommandPath System.String True PSCulture System.String True PSDebugContext System.String True PSDefaultParameterValues System.String True PSEmailServer System.String True PSHOME System.String True PSItem System.String True PSLogUserData System.String True PSModuleAutoLoadingPreference System.String True PSScriptRoot System.String True PSSessionApplicationName System.String True PSSessionConfigurationName System.String True PSUICulture System.String True PSVersionTable System.String True PWD System.String True script:error System.String True ShellId System.String True StackTrace System.String True switch System.String True {System.Management.Automation.ActionPreference, System.Management.Auto... System.String True {System.Object, System.Object[], System.Object, System.Object...} System.String True this System.String True true System.String True VerboseHelpErrors System.String True VerbosePreference System.String True WarningPreference System.String True WhatIfPreference System.String True $ System.String[] Pr ? System.String[] Pr {?, ConsoleFileName, ExecutionContext, false...} System.String[] Pr ^ System.String[] Pr _ System.String[] Pr {_, args, this, input...} System.String[] Pr args System.String[] Pr ConfirmPreference System.String[] Pr ConsoleFileName System.String[] Pr {ConsoleFileName, ExecutionContext, HOME, Host...} System.String[] Pr CurrentlyExecutingCommand System.String[] Pr DebugPreference System.String[] Pr {DebugPreference, VerbosePreference, ErrorActionPreference, WhatIfPref... System.String[] Pr env:PATHEXT System.String[] Pr error System.String[] Pr ErrorActionPreference System.String[] Pr ErrorView System.String[] Pr ExecutionContext System.String[] Pr false System.String[] Pr foreach System.String[] Pr global:$ System.String[] Pr global:^ System.String[] Pr global:error System.String[] Pr global:LASTEXITCODE System.String[] Pr global:NestedPromptLevel System.String[] Pr global:PSModuleAutoLoadingPreference System.String[] Pr global:PSSessionApplicationName System.String[] Pr global:PSSessionConfigurationName System.String[] Pr global:PWD System.String[] Pr global:StackTrace System.String[] Pr HOME System.String[] Pr Host System.String[] Pr input System.String[] Pr LASTEXITCODE System.String[] Pr local:args System.String[] Pr local:foreach System.String[] Pr local:input System.String[] Pr local:switch System.String[] Pr LogCommandHealthEvent System.String[] Pr LogCommandLifecycleEvent System.String[] Pr LogEngineHealthEvent System.String[] Pr LogEngineLifecycleEvent System.String[] Pr LogProviderHealthEvent System.String[] Pr LogProviderLifecycleEvent System.String[] Pr LogSettingsEvent System.String[] Pr Matches System.String[] Pr MaximumHistoryCount System.String[] Pr MyInvocation System.String[] Pr NestedPromptLevel System.String[] Pr null System.String[] Pr OFS System.String[] Pr OutputEncoding System.String[] Pr PID System.String[] Pr ProgressPreference System.String[] Pr PSBoundParameters System.String[] Pr PSCmdlet System.String[] Pr PSCommandPath System.String[] Pr PSCulture System.String[] Pr PSDebugContext System.String[] Pr PSDefaultParameterValues System.String[] Pr PSEmailServer System.String[] Pr PSHOME System.String[] Pr PSItem System.String[] Pr PSLogUserData System.String[] Pr PSModuleAutoLoadingPreference System.String[] Pr PSScriptRoot System.String[] Pr PSSessionApplicationName System.String[] Pr PSSessionConfigurationName System.String[] Pr PSUICulture System.String[] Pr PSVersionTable System.String[] Pr PWD System.String[] Pr script:error System.String[] Pr ShellId System.String[] Pr StackTrace System.String[] Pr switch System.String[] Pr {System.Management.Automation.ActionPreference, System.Management.Auto... System.String[] Pr {System.Object, System.Object[], System.Object, System.Object...} System.String[] Pr this System.String[] Pr true System.String[] Pr VerboseHelpErrors System.String[] Pr VerbosePreference System.String[] Pr WarningPreference System.String[] Pr WhatIfPreference System.String[] Pr $ System.Type[] Pref ? System.Type[] Pref {?, ConsoleFileName, ExecutionContext, false...} System.Type[] Pref ^ System.Type[] Pref _ System.Type[] Pref {_, args, this, input...} System.Type[] Pref args System.Type[] Pref ConfirmPreference System.Type[] Pref ConsoleFileName System.Type[] Pref {ConsoleFileName, ExecutionContext, HOME, Host...} System.Type[] Pref CurrentlyExecutingCommand System.Type[] Pref DebugPreference System.Type[] Pref {DebugPreference, VerbosePreference, ErrorActionPreference, WhatIfPref... System.Type[] Pref env:PATHEXT System.Type[] Pref error System.Type[] Pref ErrorActionPreference System.Type[] Pref ErrorView System.Type[] Pref ExecutionContext System.Type[] Pref false System.Type[] Pref foreach System.Type[] Pref global:$ System.Type[] Pref global:^ System.Type[] Pref global:error System.Type[] Pref global:LASTEXITCODE System.Type[] Pref global:NestedPromptLevel System.Type[] Pref global:PSModuleAutoLoadingPreference System.Type[] Pref global:PSSessionApplicationName System.Type[] Pref global:PSSessionConfigurationName System.Type[] Pref global:PWD System.Type[] Pref global:StackTrace System.Type[] Pref HOME System.Type[] Pref Host System.Type[] Pref input System.Type[] Pref LASTEXITCODE System.Type[] Pref local:args System.Type[] Pref local:foreach System.Type[] Pref local:input System.Type[] Pref local:switch System.Type[] Pref LogCommandHealthEvent System.Type[] Pref LogCommandLifecycleEvent System.Type[] Pref LogEngineHealthEvent System.Type[] Pref LogEngineLifecycleEvent System.Type[] Pref LogProviderHealthEvent System.Type[] Pref LogProviderLifecycleEvent System.Type[] Pref LogSettingsEvent System.Type[] Pref Matches System.Type[] Pref MaximumHistoryCount System.Type[] Pref MyInvocation System.Type[] Pref NestedPromptLevel System.Type[] Pref null System.Type[] Pref OFS System.Type[] Pref OutputEncoding System.Type[] Pref PID System.Type[] Pref ProgressPreference System.Type[] Pref PSBoundParameters System.Type[] Pref PSCmdlet System.Type[] Pref PSCommandPath System.Type[] Pref PSCulture System.Type[] Pref PSDebugContext System.Type[] Pref PSDefaultParameterValues System.Type[] Pref PSEmailServer System.Type[] Pref PSHOME System.Type[] Pref PSItem System.Type[] Pref PSLogUserData System.Type[] Pref PSModuleAutoLoadingPreference System.Type[] Pref PSScriptRoot System.Type[] Pref PSSessionApplicationName System.Type[] Pref PSSessionConfigurationName System.Type[] Pref PSUICulture System.Type[] Pref PSVersionTable System.Type[] Pref PWD System.Type[] Pref script:error System.Type[] Pref ShellId System.Type[] Pref StackTrace System.Type[] Pref switch System.Type[] Pref {System.Management.Automation.ActionPreference, System.Management.Auto... System.Type[] Pref {System.Object, System.Object[], System.Object, System.Object...} System.Type[] Pref this System.Type[] Pref true System.Type[] Pref VerboseHelpErrors System.Type[] Pref VerbosePreference System.Type[] Pref WarningPreference System.Type[] Pref WhatIfPreference System.Type[] Pref
[string]型がビルトイン変数
ということで、[System.String]に該当するuserpathがビルトイン変数のようです。 それなら話は簡単で、コレで
[psobject].Assembly.GetType('System.Management.Automation.SpecialVariables').GetFields('NonPublic,Static') ` | Where-Object {$_.FieldType -eq ([string])} ` | ForEach-Object {$_.GetValue($null)}
PowerShell 3.0では、{}を省略可能になったので…
[psobject].Assembly.GetType('System.Management.Automation.SpecialVariables').GetFields('NonPublic,Static') ` | Where-Object FieldType -eq ([string]) ` | ForEach-Object GetValue $null
MaximumHistoryCount MyInvocation OFS OutputEncoding VerboseHelpErrors LogEngineHealthEvent LogEngineLifecycleEvent LogCommandHealthEvent LogCommandLifecycleEvent LogProviderHealthEvent LogProviderLifecycleEvent LogSettingsEvent PSLogUserData NestedPromptLevel CurrentlyExecutingCommand PSBoundParameters Matches LASTEXITCODE PSDebugContext StackTrace ^ $ PSItem _ ? args this input PSCmdlet error error env:PATHEXT PSEmailServer PSDefaultParameterValues PSScriptRoot PSCommandPath foreach switch PWD null true false PSModuleAutoLoadingPreference DebugPreference ErrorActionPreference ProgressPreference VerbosePreference WarningPreference WhatIfPreference ConfirmPreference ErrorView PSSessionConfigurationName PSSessionApplicationName ConsoleFileName ExecutionContext HOME Host PID PSCulture PSHOME PSUICulture PSVersionTable ShellId
ユーザー定義変数だけ抽出したい
ここまでくれば、ユーザー定義変数だけを出すこともできますね。 まず、このままではビルトイン変数に足りないものがありますので洗い出します。 PowerShellを一度閉じてユーザー定義変数をクリアにした状態で実行します。
$builtinVariable = [psobject].Assembly.GetType('System.Management.Automation.SpecialVariables').GetFields('NonPublic,Static') | Where-Object FieldType -eq ([string]) | ForEach-Object GetValue $null $other = Get-Variable | ?{$_.Name -notin $builtinVariable} $other.Name
一覧です。
builtinVariable FormatEnumerationLimit MaximumAliasCount MaximumDriveCount MaximumErrorCount MaximumFunctionCount MaximumVariableCount profile psISE PSSessionOption
05/March/2013改定
上記は、起動直後しか有効になりません。 実際は、以下のハードコード対応が必要です。
$other = , @( "FormatEnumerationLimit", "MaximumAliasCount", "MaximumDriveCount", "MaximumErrorCount", "MaximumFunctionCount", "MaximumVariableCount", "PGHome", "PGSE", "PGUICulture", "PGVersionTable", "PROFILE", "PSSessionOption" ) $other | ForEach-Object {$builtinVariable += $_}
で出力と。
$builtinVariable
キッチリ増えてますね。
MaximumHistoryCount MyInvocation OFS OutputEncoding VerboseHelpErrors LogEngineHealthEvent LogEngineLifecycleEvent LogCommandHealthEvent LogCommandLifecycleEvent LogProviderHealthEvent LogProviderLifecycleEvent LogSettingsEvent PSLogUserData NestedPromptLevel CurrentlyExecutingCommand PSBoundParameters Matches LASTEXITCODE PSDebugContext StackTrace ^ $ PSItem _ ? args this input PSCmdlet error error env:PATHEXT PSEmailServer PSDefaultParameterValues PSScriptRoot PSCommandPath foreach switch PWD null true false PSModuleAutoLoadingPreference DebugPreference ErrorActionPreference ProgressPreference VerbosePreference WarningPreference WhatIfPreference ConfirmPreference ErrorView PSSessionConfigurationName PSSessionApplicationName ConsoleFileName ExecutionContext HOME Host PID PSCulture PSHOME PSUICulture PSVersionTable ShellId FormatEnumerationLimit MaximumAliasCount MaximumDriveCount MaximumErrorCount MaximumFunctionCount MaximumVariableCount profile psISE PSSessionOption psUnsupportedConsoleApplications
ここまでくれば、ユーザー定義変数との照合も簡単です。 Get-Variableのすべての変数出力と、$builtInVariableを照合するだけです。
Get-Variable | Where {$_.Name -notin $builtinVariable} | select Name, Value, Description
ユーザー定義変数取得Function
ではFunction化してみます。
function Get-UserVariables{ param() $builtinVariable = [psobject].Assembly.GetType('System.Management.Automation.SpecialVariables').GetFields('NonPublic,Static') ` | Where-Object FieldType -eq ([string]) ` | ForEach-Object GetValue $null $other = , @( "FormatEnumerationLimit", "MaximumAliasCount", "MaximumDriveCount", "MaximumErrorCount", "MaximumFunctionCount", "MaximumVariableCount", "PGHome", "PGSE", "PGUICulture", "PGVersionTable", "PROFILE", "PSSessionOption" ) $other | ForEach-Object {$builtinVariable += $_} Get-Variable ` | Where {$_.Name -notin $builtinVariable} ` | select Name, Value, Description }
実行は、一文だけです。
Get-UserVariables | Format-List
Functionで利用した変数だけですね!
Name : builtinVariable
Value : {MaximumHistoryCount, MyInvocation, OFS, OutputEncoding...}
Description :
Name : other
Value : {FormatEnumerationLimit MaximumAliasCount MaximumDriveCount MaximumErrorCount MaximumFunctionCount MaximumVariableCount PGHome PGSE PGUICulture PGV
ersionTable PROFILE PSSessionOption}
Description :
まとめ
PowerGUIをつかいましょう。