2014-07-09 11 views
7

Làm cách nào để tăng biến trong một chức năng PowerShell. Im sử dụng ví dụ dưới đây mà không có bất kỳ dữ liệu nào được nhập vào hàm. Những gì tôi muốn đạt được là tăng một biến mỗi khi một hàm được gọi là biến $ incre có 1 được thêm vào nó và sau đó hiển thị tổng số $ incre khi kịch bản hoàn thành. Tổng khi chạy bên dưới là 0, khi kết quả tôi muốn là 4 như comparethis chức năng đã được chạy 4 lần và mỗi lần $ incre đã được tăng lên bằng cách 1.Tăng một biến trong PowerShell trong các hàm

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

Trả lời

18

Bạn đang chạy vào một động vấn đề phạm vi. Xem about_scopes. Bên trong hàm $ incre không được định nghĩa sao cho nó được sao chép từ phạm vi toàn cục. Số tiền $ toàn cầu không được sửa đổi. Nếu bạn muốn sửa đổi nó, bạn có thể làm như sau.

$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

Trong ví dụ trên, có thể bạn muốn xử lý biến '$ incre' như biến cấp tập lệnh thay vì biến toàn cầu. Trong trường hợp đó, bạn nên sử dụng '$ Script: incre' thay vì' $ Global: incre' – gerard

Các vấn đề liên quan