2014-07-09 3 views
7

어떻게 PowerShell 함수에서 변수를 증가시킬 수 있습니까? 함수에 입력 할 데이터가없는 아래 예제를 사용합니다. 내가 성취하고자하는 것은 함수가 호출 될 때마다 변수를 증가시키는 것이다. $ incre 변수에는 1이 더 해지고 스크립트가 완료되면 총 $ increment가 표시된다. 내가 걸려 라 결과가 4 번 실행 된 기능 comparethis 같은 4 각 시간 $의 incre 당신은 동적으로 실행 1.함수에서 PowerShell의 변수 증가시키기

$incre = 0 

function comparethis() { 
    #Do this comparison 

    $incre++ 
    Write-Host $incre 
} 

comparethis #compare 2 variables 
comparethis #compare 2 variables 
comparethis #compare 2 variables 
comparethis #compare 2 variables 

Write-Host "This is the total $incre" 

답변

18

에 의해 증가 된 경우 아래의 실행 합계는, 0 범위 지정 문제. about_scopes을 참조하십시오. 함수 내에서 $ incre은 정의되지 않았으므로 전역 범위에서 복사됩니다. 전역 $ incre은 수정되지 않습니다. 수정하려면 다음을 수행하십시오.

$incre = 0 

function comparethis() { 
    #Do this comparison 

    $global:incre++ 
    Write-Host $global:incre 
} 

comparethis #compare 2 variables 
comparethis #compare 2 variables 
comparethis #compare 2 variables 
comparethis #compare 2 variables 

Write-Host "This is the total $incre" 
+1

위 예제에서 '$ increment' 변수는 전역 변수가 아닌 스크립트 수준 변수로 취급 할 가능성이 더 높습니다. 이 경우'$ Global : increment'보다는'$ Script : increment'를 사용해야합니다. – gerard

관련 문제