2012-03-30 4 views
0

Ich würde gerne mein Skript, wenn mit myscript.ps1 -loop -seconds 20 gestartet (Sekunden wäre der Start-Schlaf zwischen jeder Schleife).

  • Das Skript ist sehr komplex und i dot Quelle zwei andere scriptfiles (eine für Funktionen und eine für Einstellungen).
  • ich mit $password = Read-Host "Enter password" -AsSecureString im Skript nach einem Kennwort fragt, so kann ich nicht glaube, ich ohne dabei die $ Passwort Variable einen Kicker/Launcher-Skript Eingabe macht mich die jede Schleife PWD ..

Wie würde Ich gehe über das Schleifen des Skripts und ONLY-Schleife, wenn -loop als benannter Parameter übergeben wird?

Sollte ich das ganze Skript in eine While-Schleife legen oder was wäre der beste Weg?

Antwort

3

ein Verwenden .. while-Schleife z.B .:

# 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) 

Obwohl eher als ein Schleifenschalter vielleicht würden Sie mit einer Schleife zählen, die standardmäßig auf 1 besser dran?

+0

Fantastisch! Genau darum geht es mir! Aber was meinst du mit einer "Schleifenanzahl, die standardmäßig auf 1 gesetzt wird"? Sollte ich einen benannten Parameter nicht verwenden? Oh, und danke für [Effective Windows PowerShell: Das kostenlose eBook] (http://cid-5a8d2641e0963a97.office.live.com/self.aspx/Public/Effective%20Windows%20PowerShell.pdf) übrigens. Ein toller Beitrag für die Community! – Sune

+1

Sie könnten einen Parameter wie folgt betrachten: 'function foo ($ LoopCount = 1, $ Sekunden = 20) {do {...} while (- $ LoopCount)}' dann wird der Code ausgeführt, wenn er nur 'foo' aufgerufen wird nur einmal, aber wenn es als 'foo -loopCount 10' ausgeführt wurde, würde es zehnmal durchlaufen und für jede Iteration 20 Sekunden lang schlafen. –

+0

Das ist es, was ich auch bekommen habe. Aber ich habe in meiner Schleife ein '$ i ++' verwendet und mit 'while ($ loop -gt $ i)' überprüft. Wie funktioniert dein '- $ loopcount'? – Sune