2015-03-02 17 views
1

我有一個自己調用的腳本。我需要一個腳本在它所處的級別上維護一個變量。換句話說,當腳本「遞減」遞歸時,變量應該是它調用它時的情況。powershell遞歸變量作用域

看來,變量的範圍不允許那麼好。示例代碼(包含在test.ps1):

param ($y) 
set-variable -name temp -scope script -value $y 

while ($continue -ne "n") 
{ 
    $temp = $temp + 1 
    $output = "Temp=" + $temp + " ::y=" + $y 
    write-host $output 
    $continue = read-host "Pause..." 
    . .\test.ps1 $temp 
} 

write-host "exiting $temp - $y" 

輸出:

> PS C:\Users\evanroy\Documents\SCripts> .\test.ps1 1 
> Temp=2 ::y=1 
> Pause...: 
> Temp=3 ::y=2 
> Pause...: 
> Temp=4 ::y=3 
> Pause...: 
> Temp=5 ::y=4 
> Pause...: n 
> exiting 5 - 5 
> exiting 5 - 5 
> exiting 5 - 5 
> exiting 5 - 5 
> exiting 5 - 5 

期望的輸出:

>PS C:\Users\evanroy\Documents\SCripts> .\test.ps1 1 
>Temp=2 ::y=1 
>Pause...: 
>Temp=3 ::y=2 
>Pause...: 
>Temp=4 ::y=3 
>Pause...: 
>Temp=5 ::y=4 
>Pause...: n 
>exiting 5 - 5 
>exiting 4 - 5 
>exiting 3 - 5 
>exiting 2 - 5 
>exiting 1 - 5 

通知了 「退出」 第一變量將如何顯示,當值它最初被稱爲。

回答

1

點採購不同於「自稱」。點源採購就像您將腳本粘貼到當前的腳本並立即開始執行。

您可能想用&運算符來調用腳本。

您應該仔細閱讀about_Scopes

+1

或者直接調用腳本'\ test.ps1'。 – 2015-03-03 01:41:00

+0

doh ...我正在解決一個不同的部分,並忘記我已經做到了。我知道這很簡單,我只是看不到它......謝謝你, – 2015-03-03 14:39:22