如何将所需参数传递给Powershell ISE中的脚本?

时间:2011-01-14 10:03:56

标签: powershell parameter-passing powershell-ise

见标题。

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

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

当我想用Powershell ISE调试脚本时:我该如何填写这些参数?

4 个答案:

答案 0 :(得分:69)

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

答案 1 :(得分:20)

  1. 在Windows Powershell ISE中打开脚本(myscript.ps1)
  2. 在要检查的变量(调试)处按 F9 。例如,下面示例中的第二行,其中分配了$ outputText变量
  3. 在shell窗口中提供脚本的相对路径以及param值。例如:。\ myscript.ps1"我的价值"
  4. 点击进入(你不需要点击 F5
  5. 您将能够看到以黄色突出显示的调试断点。将光标放在所需的变量上以检查当前值。
  6. A sample showing PowerShell debugging with ISE and command parameter

答案 2 :(得分:15)

还有另一种方式。您可以使用$PSDefaultParameterValues自动变量(从v3开始)为cmdlet和高级函数提供新的默认参数(不能使用普通函数)。但是,即使在ISE中进行调试,它也适用于脚本。您必须像使用高级功能一样声明[CmdletBinding()][Parameter()]

所以对你的例子来说,

[CmdletBinding()]
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
}

变量是哈希表,并且所有标准语法都适用,但必须具有脚本(或高级函数或cmdlet)的名称,后跟冒号,然后是参数名称。您可以为多个脚本或命令设置默认值,并为每个脚本或命令设置多个参数(每个参数都是一个新的表项)。

通过这种方式,你可以按 F5 来正常运行你的脚本。参数将从变量中获取,因此您不必输入任何内容。

$PSDefaultParameterValues的其他用例可能是自定义,例如Get-History只获取最后10个条目,除非您在命令中指定-Count参数。由于条目仅在当前会话中保留,因此您需要向profile添加自定义项。您可以在提示符下键入Get-Help about_Parameters_Default_Values或在TechNet上查看相同的信息,以了解更多信息。

答案 3 :(得分:-1)

在ISE中设置所需参数的方法要简单得多:

在ISE中按 F5 之前,请设置所需的参数。我经常评论我需要的参数,例如:     #$ G_ARCHIVE =“C:\ Temp \ TestFile_001.txt”

我选择“#”后的所有内容并按 F8 。下次使用 F5 调试脚本时,参数设置为我正在测试的值,无需通过命令行传递参数。