Переменные в модулях в 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. Что я пропустил?
Ответы
Ответ 1
Function SetSQLServerAddr ([string] $name)
{
$SQLServer = $name
}
Это создает новый локальный $SQLServer
в рамках этой функции.
Если вы хотите обновить переменную в области модуля (.psm1
), вам нужно указать имя, чтобы указать, что:
Function SetSQLServerAddr ([string] $name)
{
$script:SQLServer = $name
}
Подробнее о области видимости см. get-help about_scopes
.