Articles

PowerShell 배열 가이드:

배열을 사용하고 만드는 방법은 PowerShell 의 기본 기능입니다. 배열을 사용하면 원시 문자열뿐만 아니라 진정한 데이터 구조를 수집,조작 및 출력 할 수 있습니다. 이 기능은 PowerShell 을 다른 스크립팅 언어보다 다양하고 유용하게 만듭니다.

이 기사에서는 배열이 무엇인지,그리고 PowerShell 에서 사용하는 방법에 대해 설명하겠습니다. 먼저 PowerShell 에서 배열을 만드는 방법을 보여준 다음 기본 함수를 사용하여 조작하는 방법을 보여 드리겠습니다., 그런 다음 몇 가지 다른 유형의 배열을 살펴보고 그 중 더 미묘한 기능 중 일부를 살펴 보겠습니다.

을 얻을 무료 PowerShell Active Directory Essentials 비디오는 물론

이 모두를 위한 새로운 및 고급 PowerShell 사용자. 광고 도구를 구축하는 것은 훌륭한 학습 경험입니다.

우리의 목표는 당신에게 좋은 접지와 함께 작업에 배열에 있습니다. 이러한 기본 사항을 마스터 한 후에는 자세한 내용은 PowerShell 에 우리의 과정을 살펴 수 있습니다.,

  • 배열 기본
  • 개체 배열
  • 사업자에 대한 배열
  • 값을 추가하는 방법을 배열
  • 배열 형식
  • 고급 배열 기능

PowerShell 배열

배열은 일반적인 기능의 거의 모든 프로그래밍 언어입니다. 이들은 여러 데이터 조각의 모음 역할을하는 데이터 구조입니다. 작업을 할 때는 배열을 사용할 수 있습니다 같은 명령을 동일한 기능을 수행에 각 항목 배열 내에서,또는 액세스와 조작하는 개별 요소를 사용하여 인덱스입니다.,

PowerShell 의 배열은 하나 이상의 항목을 포함 할 수 있습니다. 항목 문자열,정수 개체 또는 다른 배열이 하나의 배열의 모든 조합을 포함할 수 있습니다. 이러한 각 항목에는 항상 0 에서(때로는 혼란스럽게)시작하는 색인이 있습니다. 따라서 배열의 첫 번째 항목에는 인덱스 0 이 주어지고 두 번째 항목은 1 로 인덱싱됩니다.,

PowerShell 배열은 근본적 부분의 PowerShell 에 나타나는 모든 PowerShell 튜토리얼은 거,좋은 방법에 대한 지식이 그들과 함께 작업에 대한 중요한의 많은 측면을 사용하여 PowerShell,에서 구성 Office365 을 사용하여 PowerShell Pentesting.

PowerShell 배열의 예

배열이 무엇인지 설명하는 가장 쉬운 방법은 예제를 취하는 것입니다. 과일 한 그릇을 나타내는 배열을 만들어 봅시다.,

하는 방법은 여러 가지가 있을 만들의 배열에 Powershell,하지만 가장 쉬운 것이를 실행하는 명령:

@()

을 만들 것입니다면 빈 배열입니다. 그러나 빈 배열은 그다지 유용하지 않으므로 새로운 배열에 몇 가지 과일을 추가해 보겠습니다. 이들은 텍스트 문자열로 표시됩니다. 하는 이 명령을 실행합니다.

$fruit = @('Apples','Oranges','Bananas')

이 이름 배열”과”,그리고 세 가지 항목을 추가합니다.니다., 는 이 일을 읽을 수 있습 배열을 사용하여 이 명령:

PS /Users/yourname> $fruit

는 것입니다 지금 반환:

 Apples Oranges Bananas

당신이 볼 수 있듯이,이 배열의 그룹의 각각의 조각이다. PowerShell 은 위에서 설명한 방식으로 자동으로 색인을 생성합니다:”사과”는 0,”오렌지”는 1,”바나나”는 2 로 색인이 생성됩니다.

이 예제는 배열이 매우 단순한 객체 인 것처럼 보일 수 있으며 어떤면에서는 그렇습니다. 그러나 그들의 단순함은 또한 그러한 유연하고 강력한 대상을 만드는 것입니다., 이 가이드의 나머지 부분에서는 배열로 무엇을 할 수 있는지에 대한 맛을 알려 드리겠습니다.

배열 기본

이 섹션에서 보면 우리는 가장 기본적인 방법을 만들고 작업으로 배열에 있습니다.

배열 만들기

먼저 배열을 만듭니다. 이 작업을 수행하는 표준 방법은 다른 방법이 있지만@()를 사용하는 것입니다.

지금은”데이터”라는 배열을 만들어 보겠습니다. 이를 위해 다음과 같이 실행합니다.

$data = @()

이 배열이 비어있는 순간에 우리 때문에 지정하지 않은 사이트의 데이터가 표시됩니다., 하는 방법을 확인에 있는 항목 배열을,우리가 사용할 수 있는 계산능:

$data.count

는,순간에 반환됩니다 0 기 때문에 항목이 없는 우리의 배열입니다. 하게 배열된 일부 데이터가 그것에서는,우리는 이러한 데이터를 괄호 안에 후@

$data = @('Zero','One','Two','Three')

실행의 동일한 기능 지금,그리고 당신이 볼 수 있다는 것 4 항목에서 이 배열입니다. 이러한 항목을 다시 우리를 호출하여 배열

$data

는 목록 항목을 넣어 우리는 우리에 배열입니다.,

항목 액세스

이제 우리는 배열을 가지고,우리는 그것에서 항목에 액세스 할 것입니다. 이 작업을 수행하는 방법은 여러 가지가 있습니다. 첫 번째는 배열에있는 항목의 인덱스를 사용하는 것입니다. 전에 말했듯이 인덱스는 0 에서 시작하므로 배열의 첫 번째 항목을 검색하려면 인덱스가 0 인 항목을 보도록 PowerShell 에 알려야합니다. 우리가 하는 것에 의해 실행:

$data

이 반환됩니다”zero”때문이었던 첫 번째 문자열에 넣어 우리는 우리의 배열입니다.,이 구문을 확장하여 동일한 명령에 더 많은 인덱스를 넣는 것만으로 동일한 배열에서 여러 항목을 반환 할 수도 있습니다. 예를 들어,실행:

$data

이것은”Zero Two Three”를 반환합니다. 항목은 색인을 입력 한 것과 동일한 순서로 반환됩니다. 추가 구문을 사용하여 배열에서 항목 집합을 반환 할 수도 있습니다. 예를 들어:

$data

는 인덱스가 1 에서 3 사이 인 모든 항목을 반환합니다(포함)., 과:

$data

을 반환 마지막 항목 배열:음수를 알려줍 PowerShell 터 역순으로 계산 배열의 끝에서,그래서 이 경우,이 명령을 반환하는”세”를 마지막 항목에서 우리의 테스트는 배열입니다.

항목 변경

동일한 방법을 사용하여 배열의 항목을 업데이트 할 수 있습니다. 예를 들어,업데이트 항목의 색인은 2 조(이 세 번째 항목 배열),실행할 수 있습니다:

$data = 'second'

이것은 저희에게 직접 액세스하는 항목을 내부의 훌륭한 기능들을 가지고 있습니다.,

반복되는 작업

중 하나는 가장 강력한 기능의 PowerShell(고,사실의 어떤 명령줄 인터페이스)는 능력을에서 동일한 작업을 수행할 수 있는 모든 항목에서 훌륭한 기능들을 가지고 있습니다. 이 작업을 수행하는 여러 가지 방법이 있습니다.가장 기본적인 것은/문자 인 파이프 라인을 사용하는 것입니다. 배열을 파이프 라인에 전달하면 배열의 각 항목이 개별적으로 처리됩니다. PowerShell 객체 및 데이터 파이핑에 대한 기사에서 지적했듯이 이것은 종종 반복적 인 작업을 수행하는 가장 간단한 방법입니다.,

예를 들어,설명을 추가하려면 각 항목에서 우리의 배열을,우리가 사용할 수 있는 이 명령:

$data | ForEach-Object {"Item: "}

이 명령어는 PowerShell 하는 항목에서$데이터를 한번에 하나씩,그리고 다음에 대한 그들 각각의 추가”항목:”처음에 의해 다음,원래 값입니다.

있는 여러 가지 다른 방법으로 수행할 반복되는 작업에 PowerShell,이는 많은 것을 잘 알고 있을 사용한 경우 다른 프로그래밍 언어:PowerShell 포함 ForEach 루프,루,스위치를 반복합니다. 이들에 대한 자세한 내용은 Microsoft 설명서를 확인하십시오.,

객체 배열

지금까지 기본 데이터 인 문자열을 포함하는 배열로 작업했습니다. 그러나,배열할 수도 있습 객체를 포함하며,가장 일반적으로 사용되는 경우 다음과 같이 구성 Office365–할 필요가 작업하는 방법을 알고 있습니다. 그래서 그 일을하기위한 몇 가지 기본 명령을 살펴 보겠습니다.

를 만드는 개체의 배열

우리는 우리를 만들 수 있습의 배열체는 방법과 동일하게 우리 문자열을 사용하여@()함수입니다., 예를 들어,하는 테스트 목록을 임직원,우리가 사용할 수 있습니다:

부분 cmdlet 가 반환하는 형식의 배열을 지정할 때에 그들에게 변수로 작업합니다.

개체에 액세스하에서 배열

프로세스를 실행을 통해 위에 액세스 개별할 수 있는 데이터의 동일하게 사용될와 배열을 포함하는 개체입니다., 예를 들어,실행:

$data

반환합니다:

 FirstName LastName ----- ---- Kevin Marquette

또는 우리에 액세스할 수 있는 속성의 개인 객체를 지정하여 제공 우리는 것처럼에서 동일한 명령은 다음과 같습니다.

$data.FirstName

는 반환하는”Kevin”.

업데이트 객체의 속성에서 배열

더 가고,동일한 구문을 우리에게 주는 기능이 업데이트 개별 특성에체에서 개최되는 배열입니다., 예를 들어:

$data.FirstName = 'Jay'

는 배열의 첫 번째 항목의 FirstName 속성을”Jay”로 업데이트합니다.

에 액세스하는 모든 객실에서는 객체의 배열

대부분의 프로그래밍 언어에서 우리가 사용하는 반복적 과정(보상)에 액세스하는 모든 속성이의 배열에서 객체입니다. 우리가 할 수 있는 것에서 PowerShell,뿐만 아니라 물론,에 의해 실행:

$data | ForEach-Object {$_.LastName}

이의 목록을 반환 모든 LastName 속에서 우리의 배열을,그러나 그것은 계산이 어렵고 비용을 작성하려고 할 때마다 이 데이터를 볼 수 있습니다., 대신 PowerShell 에는 바로 가기가 있습니다. 이것을 실행하십시오:

$data.LastName

와 같은 목록이 표시됩니다. PowerShell 은 실제로 이전과 마찬가지로 각 객체를 차례로 가져 가고 있지만 이러한 복잡성을 우리에게서 숨 깁니다.

운영자에 대한 배열

의 거의 모든 사업자는 우리가 사용하는 개별 데이터 항목에서 PowerShell 또한 배열과 함께 작동하지만,그들 중 일부는 약간 다르게 작동될 때 사용됩니다. 따라서 가장 일반적인 연산자와 배열에서 사용할 수있는 방법을 살펴 보겠습니다.,

-join

-join 연산자는 PowerShell 에서 가장 많이 사용되는 명령 중 하나이며 배열로 작업 할 때 매우 유용합니다. 배열의 항목을 반복해서 사용하여 배열의 출력에 함께 결합 할 수 있습니다.예를 들어 보겠습니다. 첫째,만들은 간단한 배열

$data = @(1,2,3,4)

다음 사용 가 삽입 하이픈 사이의 각 항목을 출력하는 결과:

$data -join '-'

는 반환하는”1-2-3-4″., 서-가입자없이 사용할 수 있는 구분 기호에서 수 있는 항목에서 배열 될 것 출력이의 시리즈로 분리되지 않은 값이다.

-contains

-contains 연산자는 단일 데이터 포인트와의 사용과 매우 유사한 방식으로 배열에서 작동합니다. 배열에 특정 문자열이 포함되어 있는지 확인하는 데 사용할 수 있으며 부울 값을 출력합니다. 예를 들어:

 PS> $data = @('red','green','blue') PS> $data -contains 'green' True

Equalities

PowerShell 에서 평등을 확인하기위한 두 개의 연산자가 있습니다:-eq 및-ne., 당신이 사용하는 데 사용되 이에 하나의 값이지만,이 방법으로는 이러한 작동과 관련하여 배열 보일 수 있는 조금 이상하다. 예를 들어-eq 를 사용하는 경우 연산자는 부울”True”를 출력하지 않고 대신 일치하는 객체를 반환합니다.

예를 들어:

 PS> $data = @('red','green','blue') PS> $data -eq 'green' green

-ne 작동 하는 연산자에서 동일한 방법을 제외하고는 모든 것을 제공합니다니는 값이 같지 않은지를 지정된 값입니다., 그래서:

 PS> $data = @('red','green','blue') PS> $data -ne 'green' red blue

을 할 수 있습니다,그러나,이용하는 경우()문을 비교하는 출력 이 연산자를 예상 출력에 돌아와”True”또는”False”를 출력합니다.

값을 추가하는 방법을 배열

모든 위의 지침에,당신은 아마 왜 우리는 왼쪽으로 데이터를 추가하기 항목을 훌륭한 기능들을 가지고 있습니다. 그렇게 할 방법이 없기 때문입니다. 한 번 생성 된 배열은 영원히 같은 크기를 유지하므로 더 크게 만들려면 새 배열에 복사하고 원본을 삭제해야합니다.,복잡한 것처럼 들리지만 Powershell 은 일련의 매우 간단한 연산자를 사용하여이 프로세스를 처리합니다. 이를 수행하는 두 가지 주요 방법이 있습니다.

배열을 추가

PowerShell 추가할 수 있는 두 가지 배열을 함께 사용하여”+”연산자의 복잡성을 숨기는 무엇 시스템은 실제로하고있다. 예를 들어,당신은 두 개의 테스트는 배열은 다음과 같다:

 $first = @( 'Zero' 'One' ) $second = @( 'Two' 'Three' )

추가할 수 있습들을 함께 사용:

 PS> $first + $second

이것은 새로운 배열을 가진 네 가치,결과를 출력합니다., 그러나이 새로운 배열에 새로운 이름을 부여하지는 않을 것입니다. 그렇게하기 위해 우리는+=연산자를 사용합니다.

플러스 같 결합에 대한 배열

사용하는 대신에”+”연산자가 위의 예에서,우리가 사용할 수 있어야”+=”운영자는 우리에게 완전히 새로운 배열

 $first += 'Two, Three'

명령 간단하게 보이지만,그것은 숨기는 무엇 PowerShell 실제로하고 있습니다. 먼저$의 모든 값을 복사하고 추가 값을 포함하는 새 배열을 만드는 것입니다. 그런 다음 원래 배열을 삭제합니다.,이것은 계산 비용이 많이 들기 때문에 다소 문제가됩니다. 작은 어레이,당신이하지 않을 수 있습니다,하지만 대량의 데이터를 이 방법은 신속하게 잠글 수 있습니다 당신의 시스템입니다. 그래서 우리는 아래에서이 문제를 해결할 방법을 제시했습니다.

배열 형식

지금까지,우리는 우리가 다루는 기본값이 배열에 있습니다. PowerShell 은 당시에는 우리에게 말하지 않았지만 지금까지 만든 모든 배열은 하나의 유형 인]유형입니다. 이 유형의 배열은 모든 유형의 데이터 값을 보유 할 수 있습니다.,

강력한 형식의 배열

그러나 시간이 있을 때를 제한하려는 데이터의 유형 또는 개체는 배열에 저장할 수있는 단 하나입니다. 지정된 데이터 유형 만 포함 할 수있는 강력하게 형식화 된 배열을 사용하여이 작업을 수행 할 수 있습니다.

예를 들어,하게 배열할 수 있지만 정수,우리가 사용할 수 있습니다:

 PS> ] $numbers = 1,2,3

으로 옮기려고 하면 잘못된 형식의 데이터 값으로 강력한 형식의 배열이 반환됩니다습니다.

ArrayList

우리는 위에서 말했듯이,항목을 추가하면 배열하는 번거 로움이 될 수 있습니다., 그러나 이것을보다 우아하게 처리하는 다른 유형의 컬렉션 인 ArrayList 가 있습니다. 을 사용하기 위해서는 이 형식의 컬렉션은,그러나,우리가 호출.Net 프레임워크를 던질 수있는 어떤 불행한 출력에서 우리의 방법입니다.

을 만들 ArrayList,그리고 다음 항목을 추가,다음을 실행합니다:

 $myarray = ::new() $myArray.Add('Value')

여기에서,우리가 사용할 수 있는 기본입니다.순 생성자를 만드는 새로운 ArrayList,다음 사용하여 추가 운영하는 항목을 추가합니다. 때로는 이러한 명령이 코드를 엉망으로 만들 수있는 이상한 출력을 던지기 때문에 연산자가 있습니다.,

더 나아가

이들은 PowerShell 에서 가장 일반적인 배열 유형이지만 몇 가지 다른 유형이 있습니다. 을 개발하는 경우로 PowerShell 사용자,그것은 유용하게 사용하기 시작하 ArrayLists 대신의 직선 배열을,하지만 당신은 또한 이 유형의 배열은 사용되지 않습니다.

대신 대부분의 숙련 된 코더는 List 라는 일반 목록 유형을 사용합니다. 이 유형의 목록은 조금 더 복잡하게 사용하기 때문에 그 파생된 바에서는 C#지만,일단 당신이 하셨다 그것은,그것이 제공하는 것보다 훨씬 더 많은 유연성을 배열 설명한다.,

고급 배열 기능

외에도 기본적인 기능을 우리는 지금까지 배운 숫자도 있습니다의 고급 배열 기능,그리고 몇 가지 추가 기능을 주로 사용하기 시작하면 그들을 더 자주.

Pre-이즈 배열

하는 표준 방법을 만들기 어레이 배열의 크기에 의해 결정되는 항목의 수니다. 그러나 새($크기)생성자를 사용하여 지정된 크기의 배열을 만들 수 있습니다.

다음과 같이 할 수 있습니다.

 $data = ]::new(4)

a 를 실행하면.,이 배열에 대한 카운트 쿼리는”4″를 반환합니다.이 배열에 데이터가 없더라도 0 으로 공간을 채울 것입니다. 이것은 실제로 매우 유용해야 하는 경우를 초기화하는 새로운 배열 영으로 채워집기 때문에 전기 배열 처음에 가득 0.

곱하여 배열

곱하여 개체 배열에 특히 문자열이–무언가가는 대부분의 사람들에게 혼란을 때 그들이 처음 그것을 할 수 있습니다., 우리는 본 적이 매우 복잡하는 경우()스크립트를 이 결과를 달성하는 것은 있지만,훨씬 더 간단한 방법:

 PS> $data = @('red','green','blue') PS> $data * 3

네,그렇습니다. 이렇게하면 각 값이 세 번 반복되는 새 배열이 생성됩니다. 할 수도 있습니다 이 명령을 사용에 대한 대안으로 채우는 방법으로 배열 영(또는 다른 기본값)의 배열을 선택한 값,그리고 다음을 곱하여 그것은 많은 시간으로 당신이 좋아한다.

중첩 배열

다른 많은 프로그래밍 언어와 마찬가지로 PowerShell 은 중첩 배열을 지원합니다., PowerShell 에서이 작업을 수행하는 표준 방법은 다차원 배열을 사용하는 것입니다. 가장 간단한 예제를 만들어서 이 두 차원 배열

 $data = @(@(1,2,3),@(4,5,6),@(7,8,9)) $data2 = @( @(1,2,3), @(4,5,6), @(7,8,9) )

데이터 구조물을 만드는 이 명령은 고전적인 행렬과 그것을 사용될 수 있습니다 같은 사람들에 다른 프로그래밍 언어입니다. 예를 들어,이 배열에서 특정 값에 액세스하려면 두 가지 차원을 지정해야합니다.,

에 대한 인스턴스에 액세스하려면 가치”3″,우리가 사용하는 것 이다.

 PS> $outside = 0 PS> $inside = 2 PS> $data 3

이 명령을 사용하여 다음을 수행할 수 있습니다 액세스하는 모든 값을 가지고 있지만,당신을 추가해야 할 중첩된 대괄호 안에 얻을 각 수준의 행렬입니다.

이 최종 단어

모든 위의 지침이 될 수 있습을 많이 사용자를 위해 먼저 오는 PowerShell,하지만 그들은 주의깊게 선택한 방법으로 학습하는 언어입니다. 을 조합하여 다양한 기술을 구축할 수 있는 강력한 스크립트를 자동화하는 가장 자주하고 대부분의 시간이 많이 걸리는 일이 너와 함께 있습니다.,

이러한 기술은 또한 PowerShell 을 뛰어 넘는 데 도움이 될 것입니다. NetCat 및 Nmap 과 같은 사이버 보안을 관리하는 데 사용되는 가장 일반적인 언어 중 상당수는 PowerShell 이 수행하는 것과 동일한 원칙을 많이 사용합니다. 따라서 PowerShell 을 사용하여 사이버 보안을 개선하는 것이 더 일반적으로 시스템을 보호하는 방법을 배우는 좋은 방법입니다.피>