Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 从函数返回_Powershell_Return - Fatal编程技术网

Powershell 从函数返回

Powershell 从函数返回,powershell,return,Powershell,Return,如果找到匹配项,我希望从以下powershell函数返回(有关更完整的代码示例,请参阅我的): 这段代码似乎只是从if条件的作用域返回的,这不是很有用 我该怎么做?我需要在某个地方贴标签吗?不需要标签 function Find-Property($Filename, $PropertyName) { $shellfolder = Create-ShellFolder $fileName 0..287 | Where {$PropertyName -eq $shellfolder

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

这段代码似乎只是从if条件的作用域返回的,这不是很有用

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

不需要标签

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}
    }
}

如果要使用
return
语句退出函数,可以使用
foreach
关键字而不是
foreach对象
cmdlet。下面是一个演示:

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

有没有一种方法可以从一个函数中泛化出来?(我认为使用
C
样式的返回会更有效率。此外,我不认为您提供的代码有任何性能提升(事实上,
Where
cmdlet可能会使其速度变慢是的,
return
通常允许您更改控制流并立即退出函数)(可选返回值)。但是,管道内的返回行为不同。它退出当前脚本块。通常,我避免在管道内使用
return
。@soandos在您的问题中,您没有提到任何有关性能的问题。:-)该概念起作用:
PS>函数foo{0..287 |%{if($\uEq 5){$\uuu;break}}}PS>foo#输出5
function Foo {
    foreach ($number in (0..287)) {
        $number # Just show our current iteration.
        if ($number -eq 50) {
            return $number
        }
    }
}