콘텐츠로 건너뛰기

PowerShell 기초: 루프를 사용한 프로그래밍

    1651882981

    이 PowerShell 자습서에서는 For 루프, ForEach-Object 루프, While, Do-While 및 Do-Until 루프를 사용하는 방법을 보여줍니다.

    PowerShell 루프는 가장 기본적으로 동일한 명령 세트를 정해진 횟수만큼 반복합니다. 일정 기간 또는 특정 수의 레코드에 대해 일관된 작업을 수행하는 데 이상적인 루프는 스크립트를 크게 단순화할 수 있습니다. 특히 PowerShell에는 많은 수의 유사한 데이터가 포함된 개체를 반환하는 여러 cmdlet(특히 Get 동사로 시작하는 cmdlet이 포함됨)이 있습니다.

    PowerShell에는 여러 유형의 루프가 있으며 대부분의 경우 둘 이상의 루프 기술을 효과적으로 사용할 수 있습니다. 때때로 성능이나 코드 가독성 측면에서 가장 효율적인 루프 유형을 결정해야 합니다.

    ForEach-객체 루프

    대부분의 경우 ForEach-Object cmdlet(이전에 PowerShell 개체 작업에 대한 기사에서 설명)을 사용하는 것이 개체를 반복하는 가장 좋은 방법입니다. 가장 간단하게 ForEach-Object는 반복할 개체와 개체의 각 구성원에 대해 수행할 명령이 포함된 스크립트 블록만 있으면 됩니다.

    이러한 매개 변수는 -InputObject 및 -Process 매개 변수 이름으로 지정하거나 개체를 ForEach-Object cmdlet에 파이프하고 스크립트 블록을 첫 번째 매개 변수로 배치하여 지정할 수 있습니다. 이 기본 구문을 설명하기 위해 다음 예제에서는 ForEach-Object를 사용하여 사용자의 문서 폴더 내용을 반복하는 두 가지 방법을 보여줍니다.

    $myDocuments = Get-ChildItem $env:USERPROFILEDocuments -파일 $myDocuments | ForEach-Object {$_.FullName} ForEach-Object -InputObject $myDocuments -프로세스 {$_.FullName}

    특정 시나리오에서는 루프가 수행되기 직전이나 직후에 하나 이상의 작업을 수행하는 것이 좋습니다. -Begin 및 -End 매개변수를 사용하여 -Process 스크립트 블록의 내용 바로 앞이나 뒤에 실행할 스크립트 블록을 정의할 수 있습니다. 이것은 루프 실행 전후에 변수를 설정하거나 수정하는 데 사용할 수 있습니다.

    ForEach-Object에는 ForEach 및 %라는 두 개의 별칭이 있으며 PowerShell 3.0부터 단축 구문도 지원합니다. 다음 세 가지 예는 기능이 동일합니다.

    Get-WMIObject Win32_LogicalDisk | ForEach-Object {$_.FreeSpace} Get-WMIObject Win32_LogicalDisk | ForEach {$_.FreeSpace} Get-WMIObject Win32_LogicalDisk | % 자유 공간

    PowerShell For 루프

    For 루프는 일반적으로 배열이나 객체를 단계별로 실행하거나 필요에 따라 동일한 코드 블록을 반복하기 위해 지정된 횟수만큼 명령 세트를 반복하는 데 사용됩니다. For 루프는 루프 진입 시 변수의 값, 루프가 종료되어야 하는 조건, 루프를 통해 매번 해당 변수에 대해 수행할 동작을 설정하여 구성됩니다.

    다음 예는 구구단을 생성하는 데 사용되는 기본 For 루프를 보여줍니다.

    ($i=0; $i -le 10; $i++) { “10 * $i = ” + (10 * $i) }

    For 루프는 초기 값을 배열의 초기 인덱스로 설정하고 배열 길이가 충족될 때까지 값을 점진적으로 증가시켜 배열 값을 단계별로 실행하는 데 사용할 수 있습니다. 배열 인덱스는 다음 예와 같이 변수 이름 바로 뒤에 오는 대괄호 안에 증분된 변수를 배치하여 지정합니다.

    $colors = @(“빨간색”,”주황색”,”노란색”,”녹색”,”파란색”,”남색”,”보라색”) For ($i=0; $i -lt $colors.Length; $ i++) { $색상[$i] }

    while, Do-While 및 Do-Until 루프

    PowerShell이 ​​지원하는 세 번째 유형의 루프에는 조건이 true이거나 충족될 때까지 루프가 처리되도록 허용하는 조건 설정이 포함됩니다. while 및 Do-While 루프는 조건이 $true로 평가되는 동안 작업을 수행하는 데 사용되며 구문만 다릅니다. Do-Until 루프는 Do-While과 구문이 비슷하지만 조건문이 충족되면 처리를 중지합니다.

    Do-While 및 Do-Until 루프는 모두 스크립트 블록 앞에 Do 키워드로 시작하고 그 뒤에 조건 키워드(While 또는 When)와 조건이 옵니다. 예를 들어 다음 두 루프는 동일하게 작동하지만 조건만 반전됩니다.

    $i=1 Do { $i $i++ } 동안 ($i -le 10)$i=1 Do { $i $i++ } ($i -gt 10)까지

    while 루프는 Do-While 루프와 동일하게 수행되지만 구문만 약간 변경됩니다. while 루프는 While 키워드만 사용하고 그 뒤에 조건, 마지막으로 스크립트 블록을 사용합니다. 이 루프는 이전 예제와 기능면에서 동일하며 Do-While 루프와 동일한 조건을 사용합니다.

    $i=1 동안 ($i -le 10) { $i $i++ }

    Do-While, Do-Until 및 While 루프의 세 가지 루프 유형 중 하나는 무한 루프에 사용할 수도 있습니다. while 및 Do-While은 조건이 $true로 설정되어 있고 Do-Until이 조건이 $false로 설정되어 있습니다.

    어떤 상황에서는 루프 조건이 아닌 다른 것을 기반으로 루프를 일찍 종료해야 할 수도 있습니다. 이 경우 루프를 빠져나가기 위해 Break 키워드를 호출할 수 있습니다. 이 마지막 예는 동일한 기능을 보여주지만 무한 루프와 Break 키워드를 사용하여 적절한 시간에 종료합니다.

    $i=1 동안 ($true) { $i $i++ if ($i -gt 10) { 중단 } }

    관련된:

    PowerShell 비교 연산자 및 조건부 논리
    PowerShell: 변수, 배열 및 해시 테이블 사용
    PowerShell 기본: 파일 및 폴더 관리

    0 0 votes
    Rating post
    Subscribe
    Notify of
    guest
    0 comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x
    ()
    x