Попытка передать строку обратно из функции в PowerShell - PullRequest
0 голосов
/ 10 декабря 2018
function ExtractLocations([ref]$lp_Locations) {
    $lp_Locations.Value = "A STRING VALUE"

    return 0
}

...   

$Locations = ""
if (@(ExtractLocations([ref]$Locations)) -ne 0) {
    RecordErrorThenExit
}

$Locations всегда заканчивается пустой строкой.

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Не удалось заставить его работать с параметрами, независимо от того, что я пытался, поэтому вернул значение в виде строки, и это работает:

функция ExtractLocations {.... return $ lp_Locations}

$Locations = ExtractLocations напишите «MODIFY $ TABLE, чтобы РЕОРГАНИЗИРОВАТЬ С LOCATION = ($ ($ Locations.value)) \ p \ g» |sql $ SQLFLAGS $ TARGETDB

0 голосов
/ 10 декабря 2018

Помимо того, что @ mklemen0 сказал, чтобы установить значение, вам не нужно делать это как $Variable.Value = 'Something', это просто $Variable = 'Something'

С выражением @() вы конвертируете вывод вмассив, который не то, что вам нужно здесь.Объявление функций, подобных методам в c #, не предлагается в PowerShell.Вы можете сделать это, как показано ниже.

function ExtractLocations{
    Param([ref]$lp_Locations)
    $lp_Locations = "A STRING VALUE"

    return 0
}

ExtractLocations -lp_Locations ([ref]$Locations)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...