Сначала ваша функция заканчивается при первом возврате (верните $ 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