【发布时间】:2019-04-09 03:36:18
【问题描述】:
是否可以从模块(.psm1 文件)中设置具有script 范围的变量的值?以下内容不起作用,因为根据我的阅读,模块中的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 范围不是一个选项,因为它会更改状态(脚本退出后会挂起在脚本启动时不存在的全局变量)。
【问题讨论】:
标签: powershell variables module scope