Функция не запускается - PullRequest
       1

Функция не запускается

0 голосов
/ 04 февраля 2012

У меня есть следующая функция:

 function CheckNagiosConfig {

# Query nConf for hosts
Invoke-Expression -command $nconf_command_host | Out-file $nconf_export_host_file
$nconf_export_host = Import-Csv $nconf_export_host_file -Delimiter ";" 

# Query nConf for services
Invoke-Expression -command $nconf_command_service | Out-file $nconf_export_service_file
$nconf_export_service = Import-Csv $nconf_export_service_file -Delimiter ";" 

return $nconf_export_host
return $nconf_export_service
}

, но когда я вызываю это с CheckNagiosConfig, ничего не запускается .. Чего мне не хватает?И правильно ли я возвращаю переменные?Это способ сделать это?

1 Ответ

1 голос
/ 04 февраля 2012

Сначала ваша функция заканчивается при первом возврате (верните $ nconf_export_host), вторая никогда не будет видна.Если вы хотите вернуть разные объекты (массив), вы должны использовать Write-Output CmdLet.


Отредактировано

Для возврата переменных у вас есть как минимум три решения:

1) Работа с областью действия с глобальной переменной путем записи

$global:nconf_export_host = Import-Csv $nconf_export_host_file -Delimiter ";" 

или

$script:nconf_export_host = Import-Csv $nconf_export_host_file -Delimiter ";" 

Вы можете использовать $nconf_export_host вне функции.

2) Передача аргументов функции по ссылке

function CheckNagiosConfig ([ref]$nconf_export_host, [ref]$$nconf_export_service)
{
  ...
  $nconf_export_host.value = Import-Csv $nconf_export_host_file -Delimiter ";" 

  ...
  $nconf_export_service.value = Import-Csv $nconf_export_service_file -Delimiter ";" 

  return $true
}

В этом случае вы можете сохранить семантику возвращаемого значения, чтобы указать, как работает функция, и вы можете изменять внутри функции аргументы, передаваемые по ссылке..

3) Использование самого выхода

function CheckNagiosConfig {

# Query nConf for hosts
Invoke-Expression -command $nconf_command_host | Out-file $nconf_export_host_file
$nconf_export_host = Import-Csv $nconf_export_host_file -Delimiter ";" 
write-output $nconf_export_host

# Query nConf for services
Invoke-Expression -command $nconf_command_service | Out-file $nconf_export_service_file
$nconf_export_service = Import-Csv $nconf_export_service_file -Delimiter ";" 

return $nconf_export_service
}

используется с:

$a = CheckNagiosConfig
# $a[0] will be $nconf_export_host
# $a[1] will be $nconf_export_service
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...