2013-08-24 2 views
7

PowerShell에서 사용자가 만든 변수 만 쉽게 나열 할 수 있습니까? get-variable Cmdlet은 나에게 때때로 필요한 모든 시스템 변수를 제공합니다. 나는 새로운 세션을 열고 할 경우 예를 들어PowerShell에서 사용자가 만든 변수 만 어떻게 나열합니까?

$a=1 
$b=2 
나는 그들이 명시 적으로 세션에서 생성 된 두 변수이기 때문에 단지 ab을 반환 get-variable의 일부 변종을하고 싶습니다

.

답변

11

표준 변수의 대부분은 System.Management.Automation.SpecialVariables에서 찾을 수 있습니다.

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 

: 두 개의 추가 표준 변수가있는 ISE에서 : 당신이 이들과 다른 알려진 변수의 작은 목록을 필터링하는 경우, 사용자 정의 변수를 얻기 위해 재사용 가능한 기능을 만들 수 있습니다 $의 psISE을 및 $ psUnsupportedConsoleApplications

+0

나는이 접근법에 대해 생각했지만, 콘솔에서 다른 것처럼 이상하게 보였다. 잘 했어! –

4

당신은 설명을 사용하여 고려할 수 있지만, 변수를 만들 때 다른 구문을 필요 :

New-Variable -Name a -Value 1 -Description MyVars 
nv b 2 -des MyVars 
Get-Variable | where { $_.Description -eq 'MyVars' } 

2 구문은 당신의 일을 단축 별칭/위치 매개 변수를 사용합니다.

1

개인적으로 볼 수있는 유일한 방법은 변수를 배열에 저장하는 추가 단계가 필요합니다. 단지 테스트를위한

한 예는 :

PS C:\Users\Athomsfere> $myVars = @($a, $b) 
PS C:\Users\Athomsfere> Get-Variable -Name myVars 

Name       Value 
----       ----- 
myVars       {some, thing} 
관련 문제