如何在Powershell中传递变量cmdlet?

时间:2018-10-31 15:39:00

标签: powershell pipeline cmdlet

我想通过从参数插入管道步骤来参数化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起作用,但是那样我将不再能够使用调试器。

哪种方法可行?

谢谢, 斯蒂芬

1 个答案:

答案 0 :(得分:0)

您已将脚本块(或从get-command返回的命令)指定为管道元素。那是一个表情。

要使用脚本块,请在其前面添加&。

Read-Dataset $dataset `
| & $datasetProcessor `
| Export-Csv $path -NoTypeInformation

这是使用内置cmdlet的示例:

$sort=get-command sort-object

get-childitem | & $sort -property Length -descending