[syntax] Powershell에서 “@”기호는 무엇을합니까?

PowerShell에서 배열을 초기화하는 데 사용되는 @ 기호를 보았습니다. @ 기호는 정확히 무엇을 나타내며 이에 대한 자세한 내용은 어디에서 읽을 수 있습니까?



답변

PowerShell은 실제로 쉼표로 구분 된 목록을 배열로 처리합니다.

"server1","server2"

따라서 @는 이러한 경우 선택 사항입니다. 그러나 연관 배열의 경우 @가 필요합니다.

@{"Key"="Value";"Key2"="Value2"}

공식적으로 @는 “배열 연산자”입니다. 이에 대한 자세한 내용은 PowerShell과 함께 설치 한 설명서 또는 공동 저작 한 “Windows PowerShell : TFM”과 같은 책에서 읽을 수 있습니다.


답변

PowerShell V2에서 @는 Splat 연산자 이기도합니다 .

PS> # First use it to create a hashtable of parameters:
PS> $params = @{path = "c:\temp"; Recurse= $true}
PS> # Then use it to SPLAT the parameters - which is to say to expand a hash table 
PS> # into a set of command line parameters.
PS> dir @params
PS> # That was the equivalent of:
PS> dir -Path c:\temp -Recurse:$true


답변

위의 답변이 대부분 의 답변을 제공하지만 질문이 늦었더라도 전체 답변을 제공하는 것이 유용합니다.

배열 하위 표현식 ( about_arrays 참조 )

값이 단일 또는 null 인 경우에도 배열이되도록 강제합니다. 예 : $a = @(ps | where name -like 'foo')

해시 이니셜 라이저 ( about_hash_tables 참조 )

키-값 쌍으로 해시 테이블을 초기화합니다. 예 :
$HashArguments = @{ Path = "test.txt"; Destination = "test2.txt"; WhatIf = $true }

스플래 (참조 about_splatting )

예를 들어 바로 위의 해시 테이블을 사용하여보다 관례적인 개별적으로 열거 된 매개 변수가 아닌 배열 또는 해시 테이블의 매개 변수를 사용하여 cmdlet을 호출 해 보겠습니다. Copy-Item @HashArguments

여기 문자열 ( about_quoting_rules 참조 )

일반적으로 여러 줄 문자열에 사용되는 쉽게 포함 된 따옴표로 문자열을 생성 해 보겠습니다. 예 :

$data = @"
line one
line two
something "quoted" here
"@

이러한 유형의 질문 ( PowerShell에서 ‘x’표기법은 무엇을 의미합니까? )이 여기 StackOverflow와 많은 독자 의견에서 매우 일반적이기 때문에 Simple-Talk.com에 방금 게시 한 PowerShell 구두점 어휘집을 작성했습니다. @, % 및 #, $ _ 및? PowerShell 구두점대한 전체 가이드 에서 더 많은 내용을 확인할 수 있습니다. 기사에 첨부 된이 월 차트는 한 장에 모든 것을 제공합니다.
여기에 이미지 설명 입력


답변

cmdlet (또는 파이프 라인)의 출력을 래핑하여 @()반환되는 항목이 단일 항목이 아닌 배열인지 확인할 수도 있습니다.

예를 들어, dir은 일반적으로 목록을 반환하지만 옵션에 따라 단일 객체를 반환 할 수 있습니다. foreach-object를 사용하여 결과를 반복 할 계획이라면 목록을 다시 가져와야합니다. 다음은 인위적인 예입니다.

$results = @( dir c:\autoexec.bat)

한 가지 더 … 빈 배열 (변수 초기화와 같은)이 표시 @()됩니다.


답변

스플래 팅 연산자

배열을 생성하려면 변수를 생성하고 배열을 할당합니다. 배열은 “@”기호로 표시됩니다. 위의 논의를 수행하고 어레이를 사용하여 여러 원격 컴퓨터에 연결해 보겠습니다.

$strComputers = @("Server1", "Server2", "Server3")<enter>

배열과 해시에 사용됩니다.

PowerShell 자습서 7 : 데이터 축적, 회수 및 수정

PowerShell의 배열 리터럴


답변