2012-03-30 72 views
0

如果以myscript.ps1 -loop -seconds 20 (秒將是每個循環之間的開始睡眠)開始,我想循環我的腳本。

  • 該腳本是相當複雜的,我點源的兩個其它scriptfiles (一個用於功能和一個用於設置)。
  • 我在劇本$password = Read-Host "Enter password" -AsSecureString提示輸入密碼,所以我不認爲我能有一個起腳/啓動腳本沒有鬆動的$ password變量讓我輸入PWD每個循環..

將如何如果-loop作爲命名參數傳遞,我將循環腳本並僅循環使用?

我應該把整個腳本放在while循環中還是最好的方法是什麼?

回答

3

使用做... while循環例如爲:

# Dot source other scripts 
# Ask for and store password in a variable 
do { 
    ... # this stuff happens once or until Ctrl+C depending on $loop switch 
    if ($loop) { Start-Sleep -sec $seconds } 
} while ($loop) 

雖然而非環路交換機也許你會更好用的循環次數,默認爲1?

+0

太棒了!這正是我所追求的!但是,「循環計數默認爲1」是什麼意思?我應該不使用命名參數嗎?哦,並感謝[有效的Windows PowerShell:免費電子書](http://cid-5a8d2641e0963a97.office.live.com/self.aspx/Public/Effective%20Windows%20PowerShell.pdf)順便說一句。對社區做出巨大貢獻! – Sune 2012-03-30 17:21:17

+1

你可以考慮這樣的參數:'函數foo($ LoopCount = 1,$秒= 20){做{...}而( - $ LoopCount)}'然後當剛剛調用'foo'代碼執行只是一次,但如果作爲'foo -loopCount 10'執行,它將循環十次,每次迭代休眠20秒。 – 2012-03-30 17:33:25

+0

這就是我最後的結局。但是我用了一個'$ I ++'我的循環內,並且用'而($循環-gt $ I)'檢查。你的' - $ loopcount'如何工作? – Sune 2012-03-30 18:10:39