我正在编写一个简单的C#PowerShell主机,并希望用户能够为管道清理添加一个小表达式(排序,过滤等)。
问题是PowerShell似乎不会将脚本视为接受输入。我尝试了example from MSDN但它不起作用:
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绑定。