我无法使用带有变量的 iex(调用表达式)使我的函数工作。我想要的是:
function My-Function {
# code that constructs $command
#$command is an arbitrary string that may contain pipes,
#variables, command line paramaters, switchs, quoted strings, THE LOT!
Execute-My-Command-Exactly-As-Though-I-Had-Typed-It-Here $command
}
例如
function My-Function {
$command = "`$input | select-string hello"
iex $command
}
这样做(之后。包括我包含上述功能的文件)
PS C:\> echo "hello" | My-Function
PS C:\>
但显然它应该这样做:
PS C:\> echo "hello" | My-Function
hello
PS C:\>
此外,在实际命令行中,变量 DO 似乎被 iex 拾取:
PS C:\> $hello = "hello"
PS C:\>
PS C:\> iex "`$hello | select-string hello"
hello
PS C:\>
我能想到的唯一解决方法是将函数实际写入文件,然后 . 包括它,然后调用它。但这太可怕了!一个好的 shell 脚本语言的全部意义在于它应该能够轻松地完成这些元数据。
解决方案:
PowerShell 无法做到这一点,尽管 latkin 提供了一个有用的提示。