В PowerShell функции возвращают все значения, возвращаемые каждой строкой функции;явный оператор return
не требуется.
Метод String.IndexOf()
возвращает целочисленное значение, поэтому в этом примере DoSomething
возвращает '2' и хеш-таблицу в виде массива объектов, как видно из .GetType()
.
function DoSomething {
$site = "Something"
$app = "else"
$app.IndexOf('s')
return @{"site" = $($site); "app" = $($app)}
}
$siteInfo = DoSomething
$siteInfo.GetType()
В следующем примере показано 3 способа блокировки нежелательных выходных данных:
function DoSomething {
$site = "Something"
$app = "else"
$null = $app.IndexOf('s') # 1
[void]$app.IndexOf('s') # 2
$app.IndexOf('s')| Out-Null # 3
# Note: return is not needed.
@{"site" = $($site); "app" = $($app)}
}
$siteInfo = DoSomething
$siteInfo['site']
Вот пример того, как обернуть несколько операторов в ScriptBlock для захвата нежелательных выходных данных:
function DoSomething {
# The Dot-operator '.' executes the ScriptBlock in the current scope.
$null = .{
$site = "Something"
$app = "else"
$app
}
@{"site" = $($site); "app" = $($app)}
}
DoSomething