PowerShell Python Package 器:如何在使用参数块时获取允许任意参数的函数[复制]

fquxozlt  于 2022-11-10  发布在  Shell
关注(0)|答案(1)|浏览(126)

这个问题在这里已经有答案

Wrapper function in PowerShell: Pass remaining parameters(3个答案)
Wrapper function for cmdlet - pass remaining parameters(1个答案)
4天前关门了。
如果PowerShell函数 Package 了一个python函数,只要没有指定param块,就可以轻松地用$args传递所有任意参数:

Function scl-hython {
    & "$pythonDir\python.exe" myscript.py --some-arg hython $args
}

然而,一旦我指定了一个参数块(带有多个可选的非位置参数),就不再允许额外的任意参数,并且您将得到如下错误:

A positional parameter cannot be found that accepts argument

有没有一种方法可以启用任意参数和显式参数以实现自动完成?
我还应该澄清的是,我使用了多个可选的非位置参数,这种情况似乎没有包含在现有的类似答案中。

mkh04yzy

mkh04yzy1#

要解决此问题,可以使用ValueFromRemainingArguments的元数据属性。

Function scl-hython {
    Param(
        [parameter(ValueFromRemainingArguments)]
        $Arguments
    )
    & "$pythonDir\python.exe" myscript.py --some-arg hython $Arguments
}

或者,您可以只使用自动变量$PSBoundParameters,并引用其值。

相关问题