接受参数和管道输入的自定义PowerShell函数

时间:2019-02-12 08:07:42

标签: function powershell

当前,我在下面有以下代码,该代码对我不起作用。 我希望它表现得像这样

some-output-from-some-function | FILTER_DATA

some-output-from-some-function | FILTER_DATA | Filter_01

使用下面的功能(不包括$ id),我需要赶上 某些函数的一些输出int不变,并像这样执行它(不适合我):

$a = some-output-from-some-function
"$a" | FILTER_DATA

请帮助。我希望它是通用的,而不是特定于一两个通过的 参数...

Function FILTER_DATA ($id){
                      [CmdletBinding()]
                      Param(
                            [Parameter(ValueFromPipeline)]
                            $item
                           )
       $item | % {$PSItem.replace("&lt;","<").replace("&gt;",">")} |
               % {$PSItem -replace "<table>", "$description<table class=sortable id=$id" `
                          -replace "</table>","</table></span>" `
}}

1 个答案:

答案 0 :(得分:1)

如果在函数声明中传递参数,则不能使用

Param()。在您的情况下,您在声明函数时传递了$ID。您可以使用下面的代码,该代码应该可以正常工作。

Function FILTER_DATA {
                      [CmdletBinding()]
                      Param(
                            [Parameter(ValueFromPipeline)]$item,
                            $ID
                            )
       $item | % {$PSItem.replace("&lt;","<").replace("&gt;",">")} |
               % {$PSItem -replace "<table>", "$description<table class=sortable id=$id" `
                          -replace "</table>","</table></span>" `}
}

现在FILTER_DATA可以接受来自管道的输入$Item

相关问题