2

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

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

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

我怎样才能做到这一点?我需要在某处标记休息时间吗?

4

2 回答 2

4

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

function Foo {
    foreach ($number in (0..287)) {
        $number # Just show our current iteration.
        if ($number -eq 50) {
            return $number
        }
    }
}
于 2012-07-20T22:54:31.330 回答
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}
    }
}
于 2012-07-20T21:42:33.267 回答