大家好,
我正在尝试使用来自变量的参数在 PowerShell 中执行一个函数,我不确定是否可以按照我希望的方式执行,但也许有人知道我将如何执行此操作。
$scriptPath = "C:\temp\Create-File.ps1"
$parameters = "-Path C:\temp\testfile.txt -DoSomethingSpecial"
& $scriptPath $parameters
Run Code Online (Sandbox Code Playgroud)
沿着这些路线,我不知道参数以哪个顺序输入,所以我不能使用 $args[n..m] 或按位置绑定。也许还有其他一些我不知道的 Cmdlet 能够做到这一点?
将对象作为@James C. 在他的回答中建议只允许以 Powershell 语法传递参数(例如-param1 value1 -param2 value2)
当您需要对传递的参数进行更多控制时,例如:
--param1 value1/param1 value1-param1=value1或-param1:value1-boolean_param1value1 value2您可以使用数组而不是对象
以ipconfig命令为例,更新名称中带有“con”的所有连接:
$cmd = "ipconfig"
$params = @('/renew', '*Con*');
& $cmd $params
Run Code Online (Sandbox Code Playgroud)
或给出示例的具体问题:
$params = @('-Path', 'C:\temp\testfile.txt', '-DoSomethingSpecial')
.\Create-File.ps1 @params
Run Code Online (Sandbox Code Playgroud)
您可以使用 hastable 和Splatting来执行此操作。
只需像普通的 hastable 一样设置变量中的每个参数名称和值,然后使用 using@params语法传递它。
然而,开关参数需要一个$true值才能正常运行。
$params = @{
Path = 'C:\temp\testfile.txt'
DoSomethingSpecial = $true
}
.\Create-File.ps1 @params
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2239 次 |
| 最近记录: |