PowerShell中“| foreach {”$ _“}”的别名

时间:2011-07-14 10:29:51

标签: powershell pipeline

我喜欢使用以下代码来模拟Unix“查找”行为:

ls DIRECTORY -recurse -include PATTERN | foreach { "$_" }

事实上,还有一些其他命令我想将此| foreach { "$_" }附加到其中。所以我试图找到一种方法来使这更容易输入。我试过这样的东西:

function xfind {
    ls $args | foreach { "$_" }
}

然后我这样调用它:

xfind DIRECTORY -recurse -include PATTERN

但这似乎做错了......

2 个答案:

答案 0 :(得分:4)

只需使用-name的{​​{1}}开关(又名Get-ChildItemls):

dir

这种方式原生,干净,有效。

答案 1 :(得分:2)

试试这个,它可以扩展到一个完整的高级功能。关键是通过使用特殊变量(PSBoundParameters)传递所有参数来将参数传递给ls,该变量在高级函数中是可用的:

function xfind {

    [cmdletbinding()]

    param(
        [string[]]$path,
        [switch]$recurse,
        [string[]]$include
    )

    ls @PSBoundParameters | foreach { "$_" }   
}