如果找到匹配项,我希望从以下powershell函数返回(有关更完整的代码示例,请参阅我的codereview question):
Function Find-Property($fileName, $PropertyName)
{
$shellfolder = Create-ShellFolder $fileName
0..287 | Foreach-Object {
if($PropertyName -eq $shellfolder.GetDetailsOf($null, $_)){ return $_ }
}
}
这段代码似乎只是从if条件的范围返回,这不是那么有用。
我该怎么做?我需要在某个地方打个标签吗?
答案 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}
}
}