Я знаю, есть сотни страниц, на которых, по моему мнению, странным образом обрабатываются Powershell возвращаемые значения из функций, и я, должно быть, посетил около половины из них; =)
Этот конкретный сводит меня с ума. Рассмотрим следующее:
Я выполняю вызов функции с одним параметром (вызов не выполняется из другой функции):
$result = getVMinfo($vm)
Функция getVMinfo выглядит следующим образом:
function getVMinfo {
param (
[string]$vm
)
try {
Get-WmiObject -Class Win32_DiskDrive -Computername $vm -ErrorAction Stop
}
catch {
$ErrorReturn = $_.Exception.Message
}
if ($ErrorReturn) {
Write-Host "Error =" $ErrorReturn
return $ErrorReturn
}
}
Выглядит достаточно просто, и другие функции работают при возврате значения таким способом. Теперь, если я запускаю скрипт, бит write-Host
в catch
показывает , что $ErrorReturn
заполнено строкой (проверено это с $ErrorReturn.GetType()
). Однако $result
в операторе вызова всегда пусто. Я перепробовал много предложений, таких как создание массива и использование .Add()
, чтобы добавить строку ошибок в массив, а затем вернуть массив. Ничто не похоже на работу. Я действительно в растерянности здесь. Не понимаю, что я делаю не так.
Пожалуйста, помогите мне!