Подтвердить что ты не робот

Переменные в модулях в PowerShell

У меня есть основной script, где определены несколько констант. Затем у меня есть модуль (psm1) для включения вспомогательных функций. Подробности:

В главном script я импортировал модуль как объект:

$cud2ADhleper = Import-Module -Force $cud2ADhelperModule -AsCustomObject

В модуле у меня есть две переменные,

[string]$SQLServer = $null

Function SetSQLServerAddr ([string] $name)
{
    $SQLServer = $name
}
Function GetSQLServerAddr
{
    return $SQLServer
}

Я понимаю, что, поскольку я не экспортирую $SQLServer из модуля, эта переменная должна быть локальной, и я должен иметь возможность устанавливать/получать ее.

В противном случае получается. После того, как я вызвал SetSQLServerAddr ([string] $name), тогда обращение GetSQLServerAddr возвращает $null. Что я пропустил?

4b9b3361

Ответ 1

Function SetSQLServerAddr ([string] $name)
{
    $SQLServer = $name
}

Это создает новый локальный $SQLServer в рамках этой функции.

Если вы хотите обновить переменную в области модуля (.psm1), вам нужно указать имя, чтобы указать, что:

Function SetSQLServerAddr ([string] $name)
{
    $script:SQLServer = $name
}

Подробнее о области видимости см. get-help about_scopes.