如何将所需的parameter passing给Powershell ISE中的脚本?
见标题。
我在脚本的头部指定了所需的参数:
param ($G_ARCHIVE = $(throw "Need file to upload!"), $G_LOGFILE = $(throw "Need logfile!"))
当我想用Powershell ISEdebugging脚本时:如何填充这些参数?
使用命令窗格。 在ISE编辑器中打开脚本文件,设置断点(F9)。 然后在命令窗格中键入一个用所需参数调用此脚本的命令。 我不认为在ISE中有另一种(内置的)方法。
- 在Windows Powershell ISE中打开脚本(myscript.ps1)
- 在想要检查的variables上按F9 (debugging)。 例如下面示例中的第2行,其中分配了$ outputTextvariables
- 在shell窗口中提供脚本的相对path以及参数值。 例如:。\ myscript.ps1“我的价值”
- 按回车(你不需要打F5 )
- 您将能够以黄色突出显示debugging断点。 将光标置于所需的variables上以检查当前值。
还有另一种方法。 您可以使用$PSDefaultParameterValues
自动variables(自v3以来)为cmdlet和高级函数(不能用于普通函数)提供新的默认参数。 但是,即使在ISE中进行debugging,它也适用于脚本。
所以对于你的例子,
param ($G_ARCHIVE = $(throw "Need file to upload!"), $G_LOGFILE = $(throw "Need logfile!"))
你会在ISE提示符上执行这样的事情:
$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 }
该variables是散列表,除了该键必须具有脚本(或高级函数或cmdlet)的名称,然后是冒号,然后是参数名称外,所有标准语法都适用。 您可以为多个脚本或命令设置默认值,并为每个参数设置多个参数(每个参数都是一个新的表格条目)。
通过这样做,你可以打F5像正常一样运行你的脚本。 参数将从variables中获取,所以您不必input任何内容。
$PSDefaultParameterValues
其他用例可能是自定义,就像Get-History只能得到最后10个条目一样,除非在命令中指定了-Count
参数。 由于条目仅保留当前会话,因此您需要将自定义添加到您的configuration文件 。 您可以通过在提示符处键入Get-Help about_Parameters_Default_Values
或在TechNet上查看相同的信息来阅读更多内容。
在ISE中设置所需的参数有一个更简单的方法:
在ISE中按F5之前,请设置您需要的参数。 我通常评论我需要的参数,例如:#$ G_ARCHIVE =“C:\ Temp \ TestFile_001.txt”
我select“#”后的所有内容并按F8 。 下次我用F5debugging脚本时,参数设置为我正在testing的值,不需要通过命令行传递参数。