2011-01-14 9 views

Antwort

66

Verwenden Sie den Befehlsbereich. Öffnen Sie die Skriptdatei im ISE-Editor und setzen Sie die Haltepunkte (F9). Dann geben Sie im Befehlsfenster einen Befehl ein, der dieses Skript mit den erforderlichen Parametern aufruft. Ich glaube nicht, dass es eine andere (eingebaute) Möglichkeit gibt, dies in ISE zu tun.

+4

Dieser Ansatz nicht für mich arbeiten, da mein Filepath darin hatte Räume, war die Lösung die „Ampersand-Funktion“ auf folgende Weise zu verwenden: PS C: \ Windows> & ("c: my Ordner \ script \ PS1") -myArg 123 -anotherArg abc –

+0

Sie können tatsächlich den relativen Pfad benutzen. \ script.ps1 –

16
  1. Öffnen Sie das Skript (myscript.ps1) in Windows Powershell ISE
  2. Press F9 an der Variable, die Sie untersuchen möchten (debug). Zum Beispiel 2. Zeile im folgenden Beispiel, wo die Variable $ outputText zugewiesen wird
  3. Im Shell-Fenster geben Sie den relativen Pfad des Skripts zusammen mit dem Parameterwert an. Zum Beispiel:. \ Myscript.ps1 „mein Wert“
  4. Hit eingeben (Sie müssen nicht F5 treffen)
  5. Sie werden in der Lage sein zu sehen, die Debugging-Stützpunkte in markiert mit gelber Farbe. Setzen Sie den Cursor auf die gewünschte Variable, um den aktuellen Wert zu prüfen.

A sample showing PowerShell debugging with ISE and command parameter

+0

wie ist diese Antwort unterscheidet sich von der angenommen ein? – eckes

+1

Gedanken, die mehr Details mit Illustration erklären, sind für andere hilfreich. Zum Beispiel ist eine relative (oder absolute) Position erforderlich, die nicht an erster Stelle bereitgestellt wurde. –

13

Es gibt eine andere Art und Weise. Sie können die automatische Variable $PSDefaultParameterValues verwenden, die (seit v3) neue Standardargumente für Cmdlets und erweiterte-Funktionen bereitstellt (funktioniert nicht mit normalen Funktionen). Es funktioniert jedoch auch für Skripts, selbst wenn Sie in ISE debuggen.

Also für Ihr Beispiel

param ($G_ARCHIVE = $(throw "Need file to upload!"), 
$G_LOGFILE = $(throw "Need logfile!")) 

Sie wäre so etwas wie dies auf der ISE Prompt ausführen:

$PSDefaultParameterValues.add("ExampleScript.ps1:G_ARCHIVE","File-to-upload.txt") 
$PSDefaultParameterValues.add("ExampleScript.ps1:G_LOGFILE","Example.log") 

Sie auch den Parameter-Wert auf einen Skriptblock einstellen könnte, die Auto-Execute wird zur Laufzeit:

$PSDefaultParameterValues["ExampleScript.ps1:G_LOGFILE"]={ 
    "Example-{0:yyMMddHHmm}.log" -f [datetime]::Now 
} 

die Variable ist eine Hash-Tabelle und alle Standard-Syntax Appl ies, außer dem Schlüssel muss den Namen des Skripts (oder der erweiterten Funktion oder des Cmdlet) haben, gefolgt von einem Doppelpunkt und dem Parameternamen. Sie können Standardwerte für mehrere Skripts oder Befehle und mehrere Parameter für jedes festlegen (jeder Parameter ist ein neuer Tabelleneintrag).

Auf diese Weise können Sie einfach F5 drücken, um Ihr Skript normal auszuführen. Die Parameter werden aus der Variablen übernommen, so dass Sie nichts eingeben müssen.

Andere Anwendungsfälle für $PSDefaultParameterValues könnten Anpassungen sein, wie haben die Get-History nur die letzten 10 Einträge, es sei denn, Sie geben die -Count Parameter im Befehl. Da Einträge nur für die aktuelle Sitzung bestehen bleiben, sollten Sie Anpassungen an Ihre profile hinzufügen.Sie können mehr lesen, indem Sie an der Eingabeaufforderung Get-Help about_Parameters_Default_Values eingeben oder die gleichen Informationen auf TechNet anzeigen.

+0

Ein weiteres Skriptblockbeispiel. Sie könnten Ihr Skript automatisch die neueste Zip-Datei verwenden lassen. '$ PsDefaultParameterValues ​​= [ "ExampleScript.ps1: G_ARCHIVE"] = {(ls * .zip | sortieren Lastwritetime | wählen -letzte 1) .FullName}' Diese Art der Sache ist super nützlich, wenn Sie immer wieder neue Versionen von einigen externen Erstellung sind Datensatz zum Testen und Debuggen Ihres Skripts mit. – PatrickFranchise

+0

$ PSDefaultParameterValues.Item ("KEY") = "VALUE" ist eine andere Alternative – RichardOD

-1

Es gibt eine viel einfachere Art und Weise benötigte Parameter in ISE zu setzen:

Vor F5 in ISE drücken, den Parametersatz Sie benötigen. Ich Kommentar in der Regel die Parameter ich brauche, Beispiel: # $ G_ARCHIVE = "C: \ Temp \ TestFile_001.txt"

ich alles aus, nach "#" ein und drücken Sie F8 . Beim nächsten Debuggen des Skripts mit F5 wird der Parameter auf den Wert gesetzt, mit dem ich gerade teste, ohne dass die Parameter über die Befehlszeile übergeben werden müssen.

+0

P.S. Funktioniert nur für nicht obligatorische Parameter –