eck*_*kes 69 powershell parameter-passing powershell-ise
见标题.
我在脚本的头部指定了所需的参数:
param ($G_ARCHIVE = $(throw "Need file to upload!"),
$G_LOGFILE = $(throw "Need logfile!"))
Run Code Online (Sandbox Code Playgroud)
当我想用Powershell ISE调试脚本时:我该如何填写这些参数?
Rom*_*min 72
使用命令窗格.在ISE编辑器中打开脚本文件,设置断点(F9).然后在命令窗格中键入一个命令,使用所需参数调用此脚本.我不认为在ISE中有另一种(内置)方式.
Ash*_*lam 23

Pat*_*ise 15
还有另一种方式.您可以使用$PSDefaultParameterValues自动变量(自v3起)为cmdlet和高级函数提供新的默认参数(不适用于普通函数).但是,即使在ISE中进行调试,它也适用于脚本.您必须声明[CmdletBinding()]或[Parameter()]喜欢您的高级功能.
所以对你的例子来说,
[CmdletBinding()]
param ($G_ARCHIVE = $(throw "Need file to upload!"),
$G_LOGFILE = $(throw "Need logfile!"))
Run Code Online (Sandbox Code Playgroud)
你会在ISE提示上执行类似的东西:
$PSDefaultParameterValues.add("ExampleScript.ps1:G_ARCHIVE","File-to-upload.txt")
$PSDefaultParameterValues.add("ExampleScript.ps1:G_LOGFILE","Example.log")
Run Code Online (Sandbox Code Playgroud)
您还可以将参数值设置为脚本块,该脚本块将在运行时自动执行:
$PSDefaultParameterValues["ExampleScript.ps1:G_LOGFILE"]={
"Example-{0:yyMMddHHmm}.log" -f [datetime]::Now
}
Run Code Online (Sandbox Code Playgroud)
该变量是一个哈希表,并且所有标准语法都适用,但键必须具有脚本(或高级函数或cmdlet)的名称,后跟冒号,后跟参数名称.您可以为多个脚本或命令设置默认值,并为每个脚本或命令设置多个参数(每个参数都是一个新的表项).
通过这种方式,你可以F5像往常一样点击运行你的脚本.参数将从变量中获取,因此您无需键入任何内容.
其他用例$PSDefaultParameterValues可能是自定义,例如Get-History只获取最后10个条目,除非您-Count在命令中指定参数.由于条目仅在当前会话中保留,因此您需要向配置文件添加自定义项.您可以通过Get-Help about_Parameters_Default_Values在提示符下键入或在TechNet上查看相同的信息来阅读更多内容.