Можно ли установить значение переменной с областью действия script
из модуля (файл .psm1
)?Следующее не работает, потому что из того, что я прочитал, область действия script
в модуле на самом деле не является областью действия script
.
TestScope.psm1
function Initialize-TestVariable {
param (
[string]
$Name
)
$scope = "Script"
$visibility = "Public"
Set-Variable -Scope $scope -Name $Name -Value "Set in module" -Force -Visibility $visibility
}
Export-ModuleMember -Function *
TestScope.ps1
param (
[string]
$Value = "Default value"
)
$path = Join-Path (Split-Path -Path $PSCommandPath -Parent) 'TestScope.psm1'
Import-Module $path -ErrorAction Stop
Initialize-TestVariable -Name "Value"
$Value
Вывод
Default value
Мне нужно, чтобы вывод был:
Set in module
Если кому-то интересно, зачем мне это нужно, есть веская причина (поэтому мне не интересно обсуждение, является ли это хорошей идеей, просто нужно знать, можно ли это сделать, и если да, то как),Кроме того, использование области действия global
не вариант, так как он изменяет состояние (после завершения работы сценария будут зависать глобальные переменные, которых не было при запуске сценария).