从功能返回

时间:2012-07-20 21:08:22

标签: powershell return

如果找到匹配项,我希望从以下powershell函数返回(有关更完整的代码示例,请参阅我的codereview question):

Function Find-Property($fileName, $PropertyName)
{
    $shellfolder = Create-ShellFolder $fileName
    0..287 | Foreach-Object {
        if($PropertyName -eq $shellfolder.GetDetailsOf($null, $_)){ return $_ }
    }
}

这段代码似乎只是从if条件的范围返回,这不是那么有用。

我该怎么做?我需要在某个地方打个标签吗?

2 个答案:

答案 0 :(得分:4)

如果您希望使用return语句退出该功能,可以使用foreach关键字而不是ForEach-Object cmdlet。这是一个演示:

function Foo {
    foreach ($number in (0..287)) {
        $number # Just show our current iteration.
        if ($number -eq 50) {
            return $number
        }
    }
}

答案 1 :(得分:3)

无需标签。

function Find-Property($Filename, $PropertyName)
{
    $shellfolder = Create-ShellFolder $fileName
    0..287 | Where {$PropertyName -eq $shellfolder.GetDetailsOf($null, $_)} | 
             Foreach {$_;break}
}

另一种选择是稍微调整原始功能:

function Find-Property($fileName, $PropertyName)
{
    $shellfolder = Create-ShellFolder $fileName
    0..287 | Foreach-Object {
        if($PropertyName -eq $shellfolder.GetDetailsOf($null, $_)) {$_; break}
    }
}