다음을 통해 공유


about_Variables

간단한 설명

변수가 PowerShell에서 사용할 수 있는 값을 저장하는 방법을 설명합니다.

자세한 설명

PowerShell 변수에 모든 형식의 값을 저장할 수 있습니다. 예를 들어 명령의 결과를 저장하고 이름, 경로, 설정 및 값과 같은 명령 및 식에 사용되는 요소를 저장합니다.

변수는 값이 저장되는 메모리 단위입니다. PowerShell에서 변수는 달러 기호($예: , 또는 $my_var)로 시작하는 텍스트 문자열로 $a$process표시됩니다.

변수 이름은 대/소문자를 구분하지 않으며 공백과 특수 문자를 포함할 수 있습니다. 그러나 특수 문자와 공백을 포함하는 변수 이름은 사용하기 어렵고 피해야 합니다. 자세한 내용은 특수 문자를 포함하는 변수 이름을 참조 하세요.

PowerShell에는 여러 가지 유형의 변수가 있습니다.

  • 사용자가 만든 변수: 사용자가 만든 변수를 만들고 기본. 기본적으로 PowerShell 명령줄에서 만드는 변수는 PowerShell 창이 열려 있는 동안에만 존재합니다. PowerShell 창을 닫으면 변수가 삭제됩니다. 변수를 저장하려면 PowerShell 프로필에 추가합니다. 전역, 스크립트 또는 로컬 범위를 사용하여 스크립트에서 변수를 만들 수도 있습니다.

  • 자동 변수: 자동 변수는 PowerShell의 상태를 저장합니다. 이러한 변수는 PowerShell에서 만들어지고 PowerShell은 정확도를 기본 위해 필요에 따라 값을 변경합니다. 사용자는 이러한 변수의 값을 변경할 수 없습니다. 예를 들어 변수는 $PSHOME PowerShell 설치 디렉터리의 경로를 저장합니다.

    자세한 내용, 목록 및 자동 변수에 대한 설명은 about_Automatic_Variables 참조하세요.

  • 기본 설정 변수: 기본 설정 변수는 PowerShell에 대한 사용자 기본 설정을 저장합니다. 이러한 변수는 PowerShell에서 만들어지고 기본값으로 채워집니다. 사용자는 이러한 변수의 값을 변경할 수 있습니다. 예를 들어 변수는 $MaximumHistoryCount 세션 기록의 최대 항목 수를 결정합니다.

    자세한 내용, 목록 및 기본 설정 변수에 대한 설명은 about_Preference_Variables 참조하세요.

변수 사용

새 변수를 만들려면 대입 문을 사용하여 변수에 값을 할당합니다. 변수를 사용하기 전에 선언할 필요가 없습니다. 모든 변수의 기본값은 .입니다 $null.

PowerShell 세션의 모든 변수 목록을 얻으려면 .를 입력 Get-Variable합니다. 변수 이름은 변수를 참조하는 데 사용되는 이전 달러($) 기호 없이 표시됩니다.

예시:

$MyVariable = 1, 2, 3

$Path = "C:\Windows\System32"

변수는 명령 결과를 저장하는 데 유용합니다.

예시:

$Processes = Get-Process

$Today = (Get-Date).DateTime

변수 값을 표시하려면 변수 이름 앞에 달러 기호($)를 입력합니다.

예시:

$MyVariable
1
2
3
$Today
Tuesday, September 3, 2019 09:46:46

변수 값을 변경하려면 변수에 새 값을 할당합니다.

다음 예제에서는 변수 값을 $MyVariable 표시하고 변수 값을 변경한 다음 새 값을 표시합니다.

$MyVariable = 1, 2, 3
$MyVariable
1
2
3
$MyVariable = "The green cat."
$MyVariable
The green cat.

변수 값을 삭제하려면 cmdlet을 Clear-Variable 사용하거나 값을 $null.로 변경합니다.

Clear-Variable -Name MyVariable
$MyVariable = $null

변수를 삭제하려면 Remove-Variable 또는 Remove-Item을 사용합니다.

Remove-Variable -Name MyVariable
Remove-Item -Path Variable:\MyVariable

하나의 문을 사용하여 여러 변수에 값을 할당할 수도 있습니다. 다음 예제에서는 여러 변수에 동일한 값을 할당합니다.

$a = $b = $c = 0

다음 예제에서는 여러 변수에 여러 값을 할당합니다.

$i,$j,$k = 10, "red", $true    # $i is 10, $j is "red", $k is True
$i,$j = 10, "red", $true       # $i is 10, $j is [object[]], Length 2

자세한 내용은 about_Assignment_Operators 여러 변수 할당 섹션 을 참조하세요.

변수 유형

정수, 문자열, 배열 및 해시 테이블을 포함하여 모든 형식의 개체를 변수에 저장할 수 있습니다. 프로세스, 서비스, 이벤트 로그 및 컴퓨터를 나타내는 개체입니다.

PowerShell 변수는 느슨하게 형식화되므로 특정 형식의 개체로 제한되지 않습니다. 단일 변수는 서로 다른 유형의 개체 컬렉션 또는 배열을 동시에 포함할 수도 있습니다.

변수의 데이터 형식은 변수 값의 .NET 형식에 의해 결정됩니다. 변수의 개체 형식을 보려면 Get-Member를 사용합니다.

예시:

$a = 12                         # System.Int32
$a = "Word"                     # System.String
$a = 12, "Word"                 # array of System.Int32, System.String
$a = Get-ChildItem C:\Windows   # FileInfo and DirectoryInfo types

형식 특성 및 캐스트 표기법을 사용하여 변수에 특정 개체 형식 또는 해당 형식으로 변환할 수 있는 개체만 포함할 수 있는지 확인할 수 있습니다. 다른 형식의 값을 할당하려고 하면 PowerShell에서 값을 해당 형식으로 변환하려고 합니다. 형식을 변환할 수 없는 경우 할당 문이 실패합니다.

캐스트 표기법을 사용하려면 대괄호로 묶인 형식 이름을 대괄호로 묶은 다음 변수 이름 앞에 입력합니다(대입 문의 왼쪽). 다음 예제에서는 정수만 포함할 수 있는 변수, $words 문자열만 포함할 수 있는 변수 및 $dates DateTime 개체만 포함할 수 있는 변수를 만듭니다$number.

[int]$number = 8
$number = "12345"  # The string is converted to an integer.
$number = "Hello"
Cannot convert value "Hello" to type "System.Int32". Error: "Input string
was not in a correct format."
At line:1 char:1
+ $number = "Hello"
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo          : MetadataError: (:) [],
    ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException
[string]$words = "Hello"
$words = 2       # The integer is converted to a string.
$words += 10     # The plus (+) sign concatenates the strings.
$words
210
[datetime] $dates = "09/12/91"  # The string is converted to a DateTime object.
$dates
Thursday, September 12, 1991 00:00:00
$dates = 10    # The integer is converted to a DateTime object.
$dates
Monday, January 1, 0001 00:00:00

명령 및 식에서 변수 사용

명령이나 식에서 변수를 사용하려면 변수 이름 앞에 달러($) 기호를 입력합니다.

변수 이름 및 달러 기호가 따옴표로 묶이지 않거나 큰따옴표(") 기호로 묶인 경우 변수 값이 명령이나 식에 사용됩니다.

변수 이름과 달러 기호를 작은따옴표(') 기호로 묶으면 변수 이름이 식에 사용됩니다.

PowerShell에서 따옴표를 사용하는 방법에 대한 자세한 내용은 about_Quoting_Rules 참조하세요.

이 예제에서는 PowerShell 콘솔에서 $PROFILE PowerShell 사용자 프로필 파일의 경로인 변수 값을 가져옵니다.

$PROFILE
C:\Users\User01\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

이 예제에서는 notepad.exe PowerShell 프로필을 열 수 있는 두 개의 명령이 표시됩니다. 큰따옴표(") 기호가 있는 예제에서는 변수의 값을 사용합니다.

notepad $PROFILE

notepad "$PROFILE"

다음 예제에서는 변수를 리터럴 텍스트로 처리하는 작은따옴표(') 기호를 사용합니다.

'$PROFILE'
$PROFILE
'Use the $PROFILE variable.'
Use the $PROFILE variable.

특수 문자를 포함하는 변수 이름

변수 이름은 달러($) 기호로 시작하고 영숫자 및 특수 문자를 포함할 수 있습니다. 변수 이름 길이는 사용 가능한 메모리에 의해서만 제한됩니다.

변수 이름에는 영숫자 문자와 밑줄(_) 문자만 포함하는 것이 가장 좋습니다. 공백 및 기타 특수 문자를 포함하는 변수 이름은 사용하기 어렵고 피해야 합니다.

영숫자 변수 이름에는 다음 문자가 포함될 수 있습니다.

  • Lu, Ll, Lt, Lm, Lo 또는 Nd 범주의 유니코드 문자입니다.
  • 밑줄(_) 문자입니다.
  • 물음표(?) 문자입니다.

다음 목록에는 유니코드 범주 설명이 포함되어 있습니다. 자세한 내용은 UnicodeCategory를 참조하세요.

  • Lu - UppercaseLetter
  • Ll - LowercaseLetter
  • Lt - TitlecaseLetter
  • Lm - ModifierLetter
  • Lo - OtherLetter
  • Nd - DecimalDigitNumber

공백 또는 특수 문자가 포함된 변수 이름을 만들거나 표시하려면 변수 이름을 중괄호({}) 문자로 묶습니다. 중괄호는 PowerShell에 변수 이름의 문자를 리터럴로 해석하도록 지시합니다.

특수 문자 변수 이름에는 다음 문자가 포함될 수 있습니다.

  • 다음 예외를 제외하고 모든 유니코드 문자:
    • 닫는 중괄호(}) 문자(U+007D)입니다.
    • 백틱() 문자(`U+0060)입니다. 백틱은 유니코드 문자를 이스케이프하는 데 사용되므로 리터럴로 처리됩니다.

PowerShell에는 영숫자 및 $_ 특수 문자가 포함된 예약된 변수(예: $$, $?$^)가 있습니다. 자세한 내용은 about_Automatic_Variables를 참조하세요.

예를 들어 다음 명령은 라는 save-items변수를 만듭니다. 변수 이름에 하이픈({}) 특수 문자가 포함되어 있으므로 중괄호(-)가 필요합니다.

${save-items} = "a", "b", "c"
${save-items}
a
b
c

다음 명령은 환경 변수로 표시되는 ProgramFiles(x86) 디렉터리의 자식 항목을 가져옵니다.

Get-ChildItem ${env:ProgramFiles(x86)}

중괄호가 포함된 변수 이름을 참조하려면 변수 이름을 중괄호로 묶고 백틱 문자를 사용하여 중괄호를 이스케이프합니다. 예를 들어 명명된 this{value}is 형식 변수를 만들려면 다음을 수행합니다.

${this`{value`}is} = "This variable name uses braces and backticks."
${this`{value`}is}
This variable name uses braces and backticks.

변수 및 범위

기본적으로 변수는 생성된 범위에서만 사용할 수 있습니다.

예를 들어 함수에서 만드는 변수는 함수 내에서만 사용할 수 있습니다. 스크립트에서 만드는 변수는 스크립트 내에서만 사용할 수 있습니다. 스크립트를 도트 소스로 지정하면 변수가 현재 범위에 추가됩니다. 자세한 내용은 about_Scopes 참조하세요.

범위 한정자를 사용하여 변수의 기본 범위를 변경할 수 있습니다. 다음 식은 라는 Computers변수를 만듭니다. 변수는 스크립트 또는 함수에서 생성된 경우에도 전역 범위를 가집니다.

$Global:Computers = "Server01"

세션 외부에서 실행되는 모든 스크립트 또는 명령의 경우 외부 세션 코드에서 액세스할 수 있도록 호출 세션 범위의 변수 값을 포함하려면 범위 한정자가 필요합니다 Using .

자세한 내용은 about_Remote_Variables 참조하세요.

변수 저장

만든 변수는 사용자가 만든 세션에서만 사용할 수 있습니다. 세션을 닫으면 손실됩니다.

시작하는 모든 PowerShell 세션에서 변수를 만들려면 PowerShell 프로필에 변수를 추가합니다.

예를 들어 모든 PowerShell 세션에서 변수 값을 $VerbosePreference 변경하려면 PowerShell 프로필에 다음 명령을 추가합니다.

$VerbosePreference = "Continue"

notepad.exe 같은 텍스트 편집기에서 파일을 열어 $PROFILE PowerShell 프로필에 이 명령을 추가할 수 있습니다. PowerShell 프로필에 대한 자세한 내용은 about_Profiles 참조하세요.

변수: 드라이브

PowerShell 변수 공급자는 파일 시스템 드라이브처럼 보이고 작동하는 드라이브를 만들 Variable: 지만 세션의 변수와 해당 값을 포함합니다.

드라이브로 Variable: 변경하려면 다음 명령을 사용합니다.

Set-Location Variable:

드라이브의 항목 및 변수를 Variable: 나열하려면 or Get-ChildItem cmdlet을 Get-Item 사용합니다.

Get-ChildItem Variable:

특정 변수의 값을 얻으려면 파일 시스템 표기법을 사용하여 드라이브의 이름과 변수 이름을 지정합니다. 예를 들어 자동 변수를 $PSCulture 얻으려면 다음 명령을 사용합니다.

Get-Item Variable:\PSCulture
Name                           Value
----                           -----
PSCulture                      en-US

드라이브 및 PowerShell 변수 공급자에 Variable: 대한 자세한 정보를 표시하려면 다음을 입력합니다.

Get-Help Variable

공급자 경로가 있는 변수 구문

달러($) 기호를 사용하여 공급자 경로의 접두사를 지정하고 IContentCmdletProvider 인터페이스를 구현하는 모든 공급자의 콘텐츠에 액세스할 수 있습니다.

다음 기본 제공 PowerShell 공급자는 이 표기법을 지원합니다.

변수 cmdlet

PowerShell에는 변수를 관리하도록 설계된 cmdlet 집합이 포함되어 있습니다.

cmdlet을 나열하려면 다음을 입력합니다.

Get-Command -Noun Variable

특정 cmdlet에 대한 도움말을 보려면 다음을 입력합니다.

Get-Help <cmdlet-name>
Cmdlet 이름 설명
Clear-Variable 변수 값을 삭제합니다.
Get-Variable 현재 콘솔에 있는 변수를 가져옵니다.
New-Variable 새 변수를 만듭니다.
Remove-Variable 변수와 해당 값을 삭제합니다.
Set-Variable 변수의 값을 변경합니다.

참고 항목