我想通过从参数插入管道步骤来参数化Powershell管道,如下面的简化示例所示。
param (
$path,
$dataset,
$processor
)
$datasetProcessor = Get-Command 'Convert-Noop'
if ( $processor.Keys -contains $dataset.Name ) {
$datasetProcessor = $Processor[$dataset.Name]
}
Read-Dataset $dataset `
| $datasetProcessor `
| Export-Csv $path -NoTypeInformation
这会导致错误
仅允许将表达式作为管道的第一个元素
也许它可以使用Invoke-Expression起作用,但是那样我将不再能够使用调试器。
哪种方法可行?
谢谢, 斯蒂芬
答案 0 :(得分:0)
您已将脚本块(或从get-command返回的命令)指定为管道元素。那是一个表情。
要使用脚本块,请在其前面添加&。
Read-Dataset $dataset `
| & $datasetProcessor `
| Export-Csv $path -NoTypeInformation
这是使用内置cmdlet的示例:
$sort=get-command sort-object
get-childitem | & $sort -property Length -descending