C# PowerShell AddScript API不支持';不接受管道输入

C# PowerShell AddScript API不支持';不接受管道输入,c#,powershell,C#,Powershell,我正在编写一个简单的C#PowerShell主机,希望用户能够为管道清理(排序、筛选等)添加一个小表达式 问题是PowerShell似乎没有将脚本视为接受输入。我试过了,但不起作用: PowerShell shell = PowerShell.Create().AddCommand("get-process"). AddScript("foreach { $_.Name }") 它抛出一个System.Ma

我正在编写一个简单的C#PowerShell主机,希望用户能够为管道清理(排序、筛选等)添加一个小表达式

问题是PowerShell似乎没有将脚本视为接受输入。我试过了,但不起作用:

PowerShell shell = PowerShell.Create().AddCommand("get-process").
                                            AddScript("foreach { $_.Name }")
它抛出一个
System.Management.Automation.ParseException
,因为它将
foreach
视为循环运算符,而不是命令别名

因此,我将其替换为显式cmdlet:

PowerShell shell = PowerShell.Create().AddCommand("get-process").
                                            AddScript("ForEach-Object { $_.Name }")
它返回一个只包含
null
的集合,可能是因为脚本末尾没有输入


那怎么办?如何让管道中的脚本表达式以与命令行中相同的方式求值?我不想让我的用户担心显式设置cmdlet绑定。

PowerShell.Create().AddCommand(“Get Process”).AddCommand(“Invoke Command”).AddArgument(ScriptBlock.Create(&foreach{$\uName}”))
,看起来确实可以按预期工作!您能解释一下“&”字符的作用吗?
&
是调用运算符。在这种特殊情况下,它说:下一件事是命令,而不是关键字。