結構大事。
PowerShell V3.0でのやり方ですね。
Finding Built-In Variables
簡単に見ておきます。
変数の取得
現在の変数の取得には、コマンドレットが用意されています。
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
一番上のbuildinVariableを除く、これらを足してあげましょう。
$other | where {$_.Name -ne "builtinVariable"} | ForEach-Object {$builtinVariable += $_.Name.ToString()}
[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
[05/March/2013改定]
では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をつかいましょう。