参见标题。
我在脚本的开头指定了所需的参数:
param ($G_ARCHIVE = $(throw "Need file to upload!"),
$G_LOGFILE = $(throw "Need logfile!"))
当我想使用Powershell ISE调试脚本时:如何填写这些参数?
Answers:
使用命令窗格。在ISE编辑器中打开脚本文件,设置断点(F9)。然后在命令窗格中键入使用必需参数调用此脚本的命令。我认为在ISE中没有另一种(内置)方法可以做到这一点。
还有另一种方法。您可以使用$PSDefaultParameterValues
自存在的自动变量(自v3开始)为cmdlet和高级功能提供新的默认参数(不适用于普通功能)。但是,即使在ISE中调试时,它也适用于脚本。您必须声明[CmdletBinding()]
或[Parameter()]
喜欢使用高级功能。
因此,对于您的示例,
[CmdletBinding()]
param ($G_ARCHIVE = $(throw "Need file to upload!"),
$G_LOGFILE = $(throw "Need logfile!"))
您将在ISE Prompt上执行以下操作:
$PSDefaultParameterValues.add("ExampleScript.ps1:G_ARCHIVE","File-to-upload.txt")
$PSDefaultParameterValues.add("ExampleScript.ps1:G_LOGFILE","Example.log")
您还可以将参数值设置为脚本块,该脚本块将在运行时自动执行:
$PSDefaultParameterValues["ExampleScript.ps1:G_LOGFILE"]={
"Example-{0:yyMMddHHmm}.log" -f [datetime]::Now
}
该变量是一个哈希表,所有标准语法都适用,除了键必须具有脚本名称(或高级函数或cmdlet),后跟冒号和参数名称。您可以为多个脚本或命令设置默认值,并为每个脚本或命令设置多个参数(每个参数是一个新的表条目)。
通过这种方式,您可以像平常一样点击F5运行脚本。参数将从变量中获取,因此您无需键入任何内容。
其他用例$PSDefaultParameterValues
可能是自定义,例如让Get-History仅获取最后10个条目,除非您-Count
在命令中指定参数。由于条目仅在当前会话中持续存在,因此您需要向配置文件添加自定义项。您可以通过Get-Help about_Parameters_Default_Values
在提示符下键入或阅读更多信息,或在TechNet上查看相同的信息。
$PsDefaultParameterValues=["ExampleScript.ps1:G_ARCHIVE"]={(ls *.zip | sort lastwritetime | select -last 1).fullname}
当您不断创建一些外部数据集的新版本来测试和调试脚本时,这种方法非常有用。
[Parameter()]
修饰符声明参数时,它才在脚本 中起作用,@ eckes示例中不是这种情况。