Siehe Titel.
Ich habe die erforderlichen Parameter im Kopf eines Skripts angegeben:
param ($G_ARCHIVE = $(throw "Need file to upload!"),
$G_LOGFILE = $(throw "Need logfile!"))
Wenn ich das Skript mit Powershell ISE debuggen möchte: Wie kann ich diese Parameter füllen?
quelle
Es geht auch anders. Sie können die
$PSDefaultParameterValues
automatische Variable verwenden, die (seit Version 3) vorhanden ist, um Cmdlets und erweiterten Funktionen neue Standardargumente bereitzustellen (funktioniert nicht mit normalen Funktionen). Es funktioniert jedoch für Skripte, auch beim Debuggen in ISE. Sie müssen[CmdletBinding()]
oder deklarieren[Parameter()]
möchten wie Sie es für eine erweiterte Funktion tun würden.Also für Ihr Beispiel,
[CmdletBinding()] param ($G_ARCHIVE = $(throw "Need file to upload!"), $G_LOGFILE = $(throw "Need logfile!"))
Sie würden so etwas auf der ISE-Eingabeaufforderung ausführen:
$PSDefaultParameterValues.add("ExampleScript.ps1:G_ARCHIVE","File-to-upload.txt") $PSDefaultParameterValues.add("ExampleScript.ps1:G_LOGFILE","Example.log")
Sie können den Parameterwert auch auf einen Skriptblock setzen, der zur Laufzeit automatisch ausgeführt wird:
$PSDefaultParameterValues["ExampleScript.ps1:G_LOGFILE"]={ "Example-{0:yyMMddHHmm}.log" -f [datetime]::Now }
Die Variable ist eine Hashtabelle und es gilt die gesamte Standardsyntax, außer dass der Schlüssel den Namen des Skripts (oder der erweiterten Funktion oder des Cmdlets) gefolgt von einem Doppelpunkt und dann den Parameternamen haben muss. Sie können Standardeinstellungen für mehrere Skripte oder Befehle und mehrere Parameter für jeden festlegen (jeder Parameter ist ein neuer Tabelleneintrag).
Auf diese Weise können Sie einfach drücken F5, um Ihr Skript wie gewohnt auszuführen. Die Parameter werden aus der Variablen übernommen, sodass Sie nichts eingeben müssen.
Andere Anwendungsfälle für
$PSDefaultParameterValues
können Anpassungen sein, z. B. dass der Get-History nur die letzten 10 Einträge abruft, es sei denn, Sie geben den-Count
Parameter im Befehl an. Da Einträge nur für die aktuelle Sitzung bestehen bleiben, möchten Sie Ihrem Profil Anpassungen hinzufügen . Sie können mehr lesen, indem SieGet-Help about_Parameters_Default_Values
an der Eingabeaufforderung eingeben oder dieselben Informationen in TechNet anzeigen .quelle
$PsDefaultParameterValues=["ExampleScript.ps1:G_ARCHIVE"]={(ls *.zip | sort lastwritetime | select -last 1).fullname}
Diese Art von Dingen ist sehr nützlich, wenn Sie ständig neue Versionen eines externen Datensatzes erstellen, um Ihr Skript zu testen und zu debuggen.[Parameter()]
Dekorator deklariert werden , was im Beispiel @eckes nicht der Fall ist.Es gibt eine viel einfachere Möglichkeit, die erforderlichen Parameter in ISE festzulegen:
F5Stellen Sie vor dem Drücken von ISE den gewünschten Parameter ein. Normalerweise kommentiere ich den Parameter, den ich brauche, Beispiel: # $ G_ARCHIVE = "C: \ Temp \ TestFile_001.txt"
Ich wähle alles nach "#" aus und drücke F8. Wenn ich das Skript F5das nächste Mal mit debugge , wird der Parameter auf den Wert gesetzt, mit dem ich teste, ohne dass die Parameter über die Befehlszeile übergeben werden müssen.
quelle