2014-07-09 14 views
7

Jak zwiększyć wartość zmiennej w funkcji PowerShell. Im przy użyciu poniższego przykładu bez żadnych danych do wprowadzania do funkcji. To, co chcę osiągnąć, to zwiększenie zmiennej za każdym razem, gdy funkcja jest nazywana zmienną $ incre ma 1 dodaną do niej, a następnie wyświetla całkowitą wartość $ incre po zakończeniu skryptu. Całkowita gdy uruchomiony jest poniżej 0, gdy wynik Ja chce to 4 jako comparethis funkcyjnych został uruchomiony 4 razy i za każdym razem $ incre został zwiększony o 1.Zwiększanie zmiennej w PowerShell w funkcjach

$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" 

Odpowiedz

18

Używasz na dynamiczny problem dotyczący zakresu. Zobacz about_scopes. Wewnątrz funkcji $ incre nie jest zdefiniowany, więc jest kopiowany z zakresu globalnego. Globalny wzrost $ nie jest modyfikowany. Jeśli chcesz go zmodyfikować, możesz wykonać następujące czynności.

$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

W powyższym przykładzie jest to chyba bardziej prawdopodobne, że chcesz traktować zmienną '$ incre' jako zmienna skrypt poziomu, zamiast zmiennej globalnej. W takim przypadku powinieneś użyć '$ Script: incre' zamiast' $ Global: incre' – gerard

Powiązane problemy