PowerShell에서 @ 기호를 사용하는 방법
-
PowerShell에서 배열을 생성하기 위해
@
기호 사용 -
PowerShell에서 해시 테이블을 생성하기 위해
@
기호 사용 -
PowerShell에서 여기 문자열을 위해
@
기호 사용 -
PowerShell에서 배열로 Splatting 수행하기 위해
@
기호 사용 -
PowerShell에서 해시 테이블로 Splatting 수행하기 위해
@
기호 사용 - 결론

PowerShell은 강력한 스크립팅 언어이자 명령줄 셸로서, 유연성과 광범위한 기능 세트로 알려져 있습니다. PowerShell의 잘 알려지지 않았지만 믿을 수 없을 만큼 강력한 기능 중 하나는 @
기호의 사용입니다.
이 기사는 PowerShell 스크립팅에서 @
기호의 다면적인 응용을 탐구하며, 배열, 해시 테이블 및 여기 문자열을 생성하는 데 있어 그 능력을 드러내고, 특히 splatting의 고급 기술에서 그 중요성을 강조합니다. Splatting은 함수와 cmdlet에 매개변수를 전달하는 방법으로, 스크립트의 가독성과 유지 관리성을 크게 향상시킵니다.
@
기호의 이러한 사용을 탐구함으로써 이 기사는 초보자와 숙련된 PowerShell 사용자 모두가 이 스크립팅 언어의 모든 잠재력을 활용할 수 있도록 종합적인 가이드를 제공합니다.
PowerShell에서 배열을 생성하기 위해 @
기호 사용
PowerShell에서 @
기호는 다목적으로 사용되지만, 그 기본적인 역할 중 하나는 배열의 생성 및 조작에 있습니다. 배열은 모든 프로그래밍 언어에서 필수적이며, 요소 집합을 저장하고 조작하는 방법으로 사용됩니다.
PowerShell의 @
기호는 배열을 정의하는 명확하고 간결한 방법을 제공하여, 단일 요소나 명령의 결과도 배열로 취급되도록 보장합니다.
예시:
# Define a simple Print function
function Print($message) {
Write-Host $message
}
# Create an array of numbers
$numbers = @(1, 2, 3, 4, 5)
# Iterate over the array and print each number
foreach ($number in $numbers) {
Print $number
}
이 스크립트에서는 먼저 단일 매개변수 $message
를 받아들이고 이를 표시하기 위해 Write-Host
를 사용하는 Print
라는 함수를 정의합니다. 이 함수는 우리의 시연을 위한 기본 출력 메커니즘 역할을 합니다.
다음으로, @
기호를 사용하여 배열 $numbers
를 생성합니다. 이 배열은 1
, 2
, 3
, 4
, 5
라는 다섯 개의 숫자로 초기화됩니다.
숫자 주위에 @()
가 사용된 것을 주목하세요. 이는 이들이 배열로 취급되도록 보장합니다.
배열 생성 후, 우리는 $numbers
배열의 각 요소를 반복하기 위해 foreach
루프를 사용합니다. 루프 내부에서 우리는 각 숫자를 차례로 전달하면서 Print
함수를 호출합니다.
출력:
PowerShell에서 해시 테이블을 생성하기 위해 @
기호 사용
해시 테이블은 하나 이상의 쌍 키와 값을 저장하는 압축된 데이터 구조입니다. 또한 사전 또는 연관 배열로도 알려져 있습니다.
PowerShell에서 해시 테이블을 생성하는 문법은 @
기호로 시작합니다. 키와 값은 {}
괄호로 둘러싸여 있습니다.
예시:
# Define a simple Print function
function Print($message) {
Write-Host $message
}
# Create a hashtable of employee details
$employee = @{
Name = 'John Doe'
Department = 'IT'
Position = 'Analyst'
}
# Iterate over the hashtable and print each detail
foreach ($key in $employee.Keys) {
$value = $employee[$key]
Print "Key: $key, Value: $value"
}
이 스크립트에서는 호스트에 메시지를 출력하는 기본 유틸리티인 Print
함수를 정의하는 것부터 시작합니다.
다음으로, @
기호를 사용하여 해시 테이블 $employee
를 생성합니다. 이 해시 테이블은 직원의 이름, 부서 및 직책을 나타내는 세 개의 키-값 쌍을 포함합니다.
해시 테이블을 정의한 후, 우리는 해시 테이블의 각 키를 반복하기 위해 foreach
루프를 사용합니다. 루프 내부에서 우리는 각 키에 해당하는 값을 검색하고, 그런 다음 Print
함수를 사용하여 키와 값을 모두 출력합니다.
출력:
PowerShell에서 여기 문자열을 위해 @
기호 사용
@
기호의 또 다른 중요한 용도는 PowerShell에서 여기 문자열을 정의하는 것입니다. 여기 문자열에서는 큰따옴표와 작은따옴표가 문자적으로 해석됩니다.
PowerShell에서 여기 문자열의 주요 목적은 특정 형식, 줄 바꿈 또는 특수 문자가 필요한 긴 문자열을 처리하는 것을 간소화하는 것입니다. PowerShell에서 단일 인용 부호 '
또는 이중 인용 부호 "
를 사용하는 정규 문자열 처리는 다중 행 텍스트로 작업할 때 번거로울 수 있습니다.
예시:
# Define a simple Print function
function Print($message) {
Write-Host $message
}
# Define a variable
$name = "John"
# Create an expandable here-string
$multiLineText = @"
Hello, $name!
Welcome to PowerShell scripting.
This is an example of a multi-line here-string.
"@
# Print the here-string
Print $multiLineText
이 스크립트에서는 출력을 표시하기 위한 Print
함수를 정의하는 것부터 시작합니다.
그런 다음 변수 $name
을 John
으로 설정합니다. 이를 이어서 확장 가능한 여기 문자열 $multiLineText
를 생성합니다.
다중 행 문자열을 시작하고 끝내기 위해 @" "@
구분 기호가 사용된 것을 주목하세요. 이 여기 문자열 내부에는 변수 $name
이 포함되어 있으며, 이는 그 값으로 확장될 것입니다.
마지막으로 Print
함수를 호출하여 여기 문자열의 내용을 출력합니다.
출력:
여기 문자열은 @" "@
사이에 있는 모든 텍스트를 포함합니다.
단일 인용 부호가 있는 여기 문자열:
# Define a simple Print function
function Print($message) {
Write-Host $message
}
# Create a single-quoted here-string
$literalText = @'
This is an example of a single-quoted here-string.
Special characters like $ or ` won't be processed.
Everything here is treated as literal text.
'@
# Print the here-string
Print $literalText
우리의 스크립트에서는 주어진 메시지를 호스트에 출력하는 Print
함수를 먼저 정의합니다.
그 다음, $literalText
라는 단일 인용 부호가 있는 여기 문자열을 생성합니다. @' '@
구분 기호는 여기 문자열의 시작과 끝을 나타냅니다.
이 구분 기호 내에서는 PowerShell에서 일반적으로 특수한 의미를 가지는 특수 문자 $
와 백틱 `
를 언급하는 텍스트를 포함합니다.
마지막으로 Print
함수를 호출하여 여기 문자열의 내용을 표시합니다.
출력:
단일 인용 부호가 있는 여기 문자열에서 변수는 문자적으로 해석되어 출력에 인쇄되지만, 이중 인용 부호가 있는 여기 문자열에서는 그렇지 않습니다.
PowerShell에서 배열로 Splatting 수행하기 위해 @
기호 사용
Splatting은 특히 많은 매개변수를 필요로 하는 명령을 처리할 때 스크립트의 가독성과 유지 관리성을 향상시키기 위해 주로 사용됩니다. 각 매개변수와 그 값을 명령에 직접 나열하는 대신, splatting을 사용하면 배열이나 해시 테이블에 정의하고 @
기호를 사용하여 한 번에 모두 전달할 수 있습니다.
명령에서 배열로 splatting을 위해 @
기호를 사용할 수 있습니다. @
기호는 매개변수의 이름이 필요 없는 위치 매개변수에 대한 값을 splat할 수 있는 배열을 사용할 수 있습니다.
예시:
# Define a simple Print function
function Print-Message($part1, $part2, $part3) {
Write-Host "$part1 - $part2 - $part3"
}
# Define an array of parameters
$paramArray = @('Hello', 'PowerShell', 'Splatting')
# Call the function using splatting
Print-Message @paramArray
이 예시에서는 세 개의 매개변수를 받아들이고 형식화된 문자열로 출력하는 Print-Message
함수를 정의하는 것부터 시작합니다.
그런 다음 Hello
, PowerShell
및 Splatting
라는 세 개의 문자열 값으로 구성된 배열 $paramArray
를 생성합니다. 이 값들은 우리 함수의 매개변수인 $part1
, $part2
및 $part3
에 해당합니다.
Print-Message
함수를 호출할 때, 우리는 매개변수 배열을 넘기기 위해 splatting을 사용합니다. $paramArray
앞에 있는 @
기호는 배열의 요소들이 함수의 매개변수에 해당하는 순서로 매핑되어야 함을 나타냅니다.
출력:
PowerShell에서 해시 테이블로 Splatting 수행하기 위해 @
기호 사용
유사하게 해시 테이블 splatting을 위해 @
기호를 사용할 수 있습니다.
해시 테이블로 splatting의 주요 목적은 PowerShell에서 함수와 cmdlet에 매개변수를 전달하는 과정을 간소화하는 것입니다. 이것은 많은 매개변수를 가진 복잡한 명령을 관리하는 데 특히 가치가 있으며, 코드의 가독성과 유지 관리성을 향상시킵니다.
Splatting은 매개변수를 보다 구조화되고 깔끔하게 지정하는 방법을 제공하며, 이는 스크립트 디버깅 및 편집에 유용합니다.
예시:
# Define a simple function
function Get-Greeting {
param (
[string]$Name,
[string]$TimeOfDay
)
"Good $TimeOfDay, $Name!"
}
# Define a hash table of parameters
$greetingParams = @{
Name = 'Alice'
TimeOfDay = 'Morning'
}
# Call the function using splatting
$greeting = Get-Greeting @greetingParams
Write-Host $greeting
우리의 스크립트에서는 먼저 두 개의 매개변수인 Name
과 TimeOfDay
를 받는 Get-Greeting
함수를 정의합니다.
다음으로 해시 테이블 $greetingParams
를 생성하고, Name
과 TimeOfDay
키에 각각 'Alice'
와 'Morning'
값을 할당합니다. 이 키들은 Get-Greeting
함수의 매개변수 이름에 해당합니다.
Get-Greeting
을 호출할 때, 우리는 해시 테이블 변수 $greetingParams
앞에 @
기호를 붙여 splatting을 사용합니다. 이 작업은 해시 테이블의 키를 함수의 해당 매개변수에 매핑합니다.
출력:
결론
이 기사에서 우리는 PowerShell에서 @
기호의 다목적 응용을 탐구하였습니다. 이는 종종 간과되지만 스크립팅에서 엄청난 잠재력을 지닌 부분입니다. 배열과 해시 테이블 생성, 여기 문자열 정의 및 splatting 구현에 이르기까지, @
기호는 PowerShell 스크립터의 도구 상자에서 작지만 강력한 도구입니다.
복잡한 매개변수 전달을 간소화하고 코드 가독성을 높이는 능력은 ARRAY 및 해시 테이블과 함께 splatting의 맥락에서 특히 주목할 만합니다. 우리가 본 바와 같이 PowerShell에서 @
기호의 사용은 단순한 문법의 문제가 아니라, 보다 효율적이고 가독성이 높으며 유지 관리가 용이한 스크립팅 관행으로 나아가는 관문입니다.