2014-07-09 1 views
7

Come si incrementa una variabile in una funzione di PowerShell. Im utilizzando l'esempio di seguito senza dati da inserire nella funzione. Quello che sto cercando di ottenere è di incrementare una variabile ogni volta che una funzione viene chiamata variabile $ incre ha aggiunto 1 e quindi visualizza il totale di $ incre quando lo script viene completato. Il totale quando si esegue il sotto è 0, quando il risultato Sto volendo è 4 come le comparethis funzione è stata eseguita 4 volte e ogni volta $ incre è stato incrementato di 1.Incremento di una variabile in PowerShell nelle funzioni

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

risposta

18

Si esegue in una dinamica problema di scoping. Vedi about_scopes. All'interno della funzione $ incre non è definito, quindi viene copiato dall'ambito globale. L'incremento globale di $ non viene modificato. Se desideri modificarlo puoi fare quanto segue.

$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

Nell'esempio sopra è probabilmente più probabile che si desideri trattare la variabile '$ incre' come una variabile a livello di script, piuttosto che una variabile globale. In tal caso, dovresti usare '$ Script: incre' piuttosto che' $ Global: incre' – gerard