2012-03-30 68 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