尝试使用包含多个参数值的少数变量。
$iniFileContent["Settings"].GetEnumerator() | Select -ExpandProperty value | ForEach-Object {
Convert-WindowsImage -SourcePath $iniFileContent.Locations.ServerISO $_
}
脚本查看我的.ini文件:
[Settings]
CreateVM1=-VHDFormat "VHDX" -Edition "ServerStandardEval"
CreateVM2=-VHDFormat "VHDX" -Edition "ServerStandardEval"
[Locations]
ServerISO=C:\server2012.iso
最终结果应为:
Convert-WindowsImage -SourcePath $iniFileContent.Locations.ServerISO -VHDFormat "VHDX" -Edition "ServerStandardEval"
错误是“找不到接受参数[...]的位置参数。”根据我的理解,问题出现是因为变量$_
包含多个参数值,它试图用作单个参数。
将具有多个参数值的字符串解析为函数的正确方法是什么?
答案 0 :(得分:2)
语法
Invoke-Expression [-Command] <String> [<CommonParameters>]
描述
Invoke-Expression
cmdlet评估或运行指定的字符串 命令并返回表达式或命令的结果。 没有Invoke-Expression
,在命令行提交一个字符串 将被返回(回显)不变。
我使用iex
别名而不是完整Invoke-Expression
仅仅是为了更好的可读性:
$iniFileContent["Settings"].GetEnumerator() |
Select -ExpandProperty value | ForEach-Object {
iex $("Convert-WindowsImage -SourcePath $($iniFileContent.Locations.ServerISO) " + $_)
}