具有来自变量的参数的Powershell呼叫运算符(&)

时间:2018-10-01 08:15:26

标签: powershell

大家好,

我正在尝试在PowerShell中使用来自变量的参数执行函数,我不确定是否可以以我希望的方式实现,但也许有人知道我将如何去做。< / p>

$((i++))

沿这些方向,我不知道输入参数的顺序,所以我不能使用$ args [n..m]或按位置绑定。也许还有其他我不知道的Cmdlet能够做到这一点?

3 个答案:

答案 0 :(得分:3)

您可以使用hastable和Splatting进行此操作。

只需像普通的hastable一样,简单地在变量中设置每个参数名称和值,然后使用@params语法将其传入。

但是,switch参数需要一个$true值才能正常运行。

$params = @{
    Path               = 'C:\temp\testfile.txt'
    DoSomethingSpecial = $true
}

.\Create-File.ps1 @params

答案 1 :(得分:1)

您可以通过Start-Process运行它

String tuitionName = nameSnapshot.child("adstuitioname").getValue(String.class).toString();

答案 2 :(得分:0)

按照答案中的@James C.的建议传递对象仅允许以Powershell语法传递参数(例如-param1 value1 -param2 value2

当您需要对传递的参数进行更多控制时,例如:

  • unix样式--param1 value1的双破折号语法
  • Windows样式/param1 value1的斜杠语法
  • 必须用等号(或冒号)-param1=value1-param1:value1
  • 参数-boolean_param1无值
  • 其他动词(不带参数名称的值)value1 value2

您可以使用数组代替对象

例如,以ipconfig命令来更新名称中带有“ con”的所有连接:

$cmd = "ipconfig"
$params = @('/renew', '*Con*');
& $cmd $params

或给出的具体问题示例:

$params = @('-Path', 'C:\temp\testfile.txt', '-DoSomethingSpecial')
.\Create-File.ps1 @params