如何将所需的parameter passing给Powershell ISE中的脚本?

见标题。

我在脚本的头部指定了所需的参数:

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

当我想用Powershell ISEdebugging脚本时:如何填充这些参数?

使用命令窗格。 在ISE编辑器中打开脚本文件,设置断点(F9)。 然后在命令窗格中键入一个用所需参数调用此脚本的命令。 我不认为在ISE中有另一种(内置的)方法。

  1. 在Windows Powershell ISE中打开脚本(myscript.ps1)
  2. 在想要检查的variables上按F9 (debugging)。 例如下面示例中的第2行,其中分配了$ outputTextvariables
  3. 在shell窗口中提供脚本的相对path以及参数值。 例如:。\ myscript.ps1“我的价值”
  4. 按回车(你不需要打F5
  5. 您将能够以黄色突出显示debugging断点。 将光标置于所需的variables上以检查当前值。

显示使用ISE和命令参数进行PowerShell调试的示例

还有另一种方法。 您可以使用$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的值,不需要通过命令行传递参数。