PowerShell에서 @ 기호를 사용하는 방법

  1. PowerShell에서 배열을 생성하기 위해 @ 기호 사용
  2. PowerShell에서 해시 테이블을 생성하기 위해 @ 기호 사용
  3. PowerShell에서 여기 문자열을 위해 @ 기호 사용
  4. PowerShell에서 배열로 Splatting 수행하기 위해 @ 기호 사용
  5. PowerShell에서 해시 테이블로 Splatting 수행하기 위해 @ 기호 사용
  6. 결론
이 기사와 함께 볼 수 있도록 자세한 유튜브 영상을 제작하여 아래에 삽입했습니다!
PowerShell에서 @ 기호를 사용하는 방법

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 함수를 호출합니다.

출력:

파워셸에서 @ 기호 사용 - 출력 1

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에서 @ 기호 사용 - 출력 2

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 함수를 정의하는 것부터 시작합니다.

그런 다음 변수 $nameJohn으로 설정합니다. 이를 이어서 확장 가능한 여기 문자열 $multiLineText를 생성합니다.

다중 행 문자열을 시작하고 끝내기 위해 @" "@ 구분 기호가 사용된 것을 주목하세요. 이 여기 문자열 내부에는 변수 $name이 포함되어 있으며, 이는 그 값으로 확장될 것입니다.

마지막으로 Print 함수를 호출하여 여기 문자열의 내용을 출력합니다.

출력:

파워셸에서 @ 기호 사용 - 출력 3

여기 문자열은 @" "@ 사이에 있는 모든 텍스트를 포함합니다.

단일 인용 부호가 있는 여기 문자열:

# 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 함수를 호출하여 여기 문자열의 내용을 표시합니다.

출력:

파워셸에서 @ 기호 사용 - 4 출력

단일 인용 부호가 있는 여기 문자열에서 변수는 문자적으로 해석되어 출력에 인쇄되지만, 이중 인용 부호가 있는 여기 문자열에서는 그렇지 않습니다.

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, PowerShellSplatting라는 세 개의 문자열 값으로 구성된 배열 $paramArray를 생성합니다. 이 값들은 우리 함수의 매개변수인 $part1, $part2$part3에 해당합니다.

Print-Message 함수를 호출할 때, 우리는 매개변수 배열을 넘기기 위해 splatting을 사용합니다. $paramArray 앞에 있는 @ 기호는 배열의 요소들이 함수의 매개변수에 해당하는 순서로 매핑되어야 함을 나타냅니다.

출력:

powershell에서 @ 기호 사용 - 5 출력

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

우리의 스크립트에서는 먼저 두 개의 매개변수인 NameTimeOfDay를 받는 Get-Greeting 함수를 정의합니다.

다음으로 해시 테이블 $greetingParams를 생성하고, NameTimeOfDay 키에 각각 'Alice''Morning' 값을 할당합니다. 이 키들은 Get-Greeting 함수의 매개변수 이름에 해당합니다.

Get-Greeting을 호출할 때, 우리는 해시 테이블 변수 $greetingParams 앞에 @ 기호를 붙여 splatting을 사용합니다. 이 작업은 해시 테이블의 키를 함수의 해당 매개변수에 매핑합니다.

출력:

@ 기호를 파워셸에서 사용 - 출력 6

결론

이 기사에서 우리는 PowerShell에서 @ 기호의 다목적 응용을 탐구하였습니다. 이는 종종 간과되지만 스크립팅에서 엄청난 잠재력을 지닌 부분입니다. 배열과 해시 테이블 생성, 여기 문자열 정의 및 splatting 구현에 이르기까지, @ 기호는 PowerShell 스크립터의 도구 상자에서 작지만 강력한 도구입니다.

복잡한 매개변수 전달을 간소화하고 코드 가독성을 높이는 능력은 ARRAY 및 해시 테이블과 함께 splatting의 맥락에서 특히 주목할 만합니다. 우리가 본 바와 같이 PowerShell에서 @ 기호의 사용은 단순한 문법의 문제가 아니라, 보다 효율적이고 가독성이 높으며 유지 관리가 용이한 스크립팅 관행으로 나아가는 관문입니다.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website