Powershell возвращает значение из функции, сводящей меня с ума - PullRequest
1 голос
/ 20 апреля 2020

Я знаю, есть сотни страниц, на которых, по моему мнению, странным образом обрабатываются 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(), чтобы добавить строку ошибок в массив, а затем вернуть массив. Ничто не похоже на работу. Я действительно в растерянности здесь. Не понимаю, что я делаю не так.

Пожалуйста, помогите мне!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...