gpt4 book ai didi

powershell - PowerShell中的包装函数: Pass remaining parameters

转载 作者:行者123 更新时间:2023-12-02 23:42:44 27 4
gpt4 key购买 nike

我正在尝试在 PowerShell 中编写一个包装函数,该函数基本上评估第一个参数,并基于该函数在计算机上运行程序。然后,包装函数的所有剩余参数都应该传递给运行的程序。

所以它应该看起来像这样:

function test ( [string] $option )
{
if ( $option -eq 'A' )
{
Write-Host $args
}
elseif ( $option -eq 'B' )
{
. 'C:\Program Files\some\program.exe' $args
}
}

现在仅添加 $args 不起作用,那么我需要做什么才能使其起作用?另一种选择可能是使用 Invoke-Expression,但感觉有点像 eval 所以我想尽可能避免,此外我认为这样做会限制我只使用字符串参数对吗?如果可能的话,我希望完全支持包装的程序/cmdlet - 基本上就像动态别名一样。这可能吗?

最佳答案

这就是你所要求的。如果您需要将破折号前缀的选项传递给与 PowerShell 通用参数冲突或导致歧义的可执行文件,您可能会遇到麻烦。但这可能会让您开始。

function Invoke-MyProgram
{
[CmdletBinding()]
Param
(
[parameter(mandatory=$true, position=0)][string]$Option,
[parameter(mandatory=$false, position=1, ValueFromRemainingArguments=$true)]$Remaining
)

if ($Option -eq 'A')
{
Write-Host $Remaining
}
elseif ($Option -eq 'B')
{
& 'C:\Program Files\some\program.exe' @Remaining # NOTE: @ not $ (splatting)
}
}

关于powershell - PowerShell中的包装函数: Pass remaining parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7415883/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com