如何从模块设置PowerShell脚本变量?

如何从模块设置PowerShell脚本变量?,powershell,variables,module,scope,Powershell,Variables,Module,Scope,是否可以从模块(.psm1文件)设置具有脚本作用域的变量值?以下内容不起作用,因为根据我所读的内容,模块中的script范围实际上不是script范围 TestScope.psm1 TestScope.ps1 输出 我需要输出为: Set in module 如果有人想知道我为什么需要这个,有一个合理的理由(因此我对讨论这是否是一个好主意不感兴趣,只需要知道这是否可以做到,如果可以,如何做到)。此外,使用global作用域不是一个选项,因为它会更改状态(脚本退出后将有挂起的全局变量,而这些变量

是否可以从模块(
.psm1
文件)设置具有
脚本
作用域的变量值?以下内容不起作用,因为根据我所读的内容,模块中的
script
范围实际上不是
script
范围

TestScope.psm1

TestScope.ps1

输出

我需要输出为:

Set in module
如果有人想知道我为什么需要这个,有一个合理的理由(因此我对讨论这是否是一个好主意不感兴趣,只需要知道这是否可以做到,如果可以,如何做到)。此外,使用
global
作用域不是一个选项,因为它会更改状态(脚本退出后将有挂起的全局变量,而这些变量在脚本启动时并不存在)

我想出来了:

TestScope.psm1

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
function Initialize-TestVariable {
    [CmdletBinding()]
    param (
        [string]
        $Name
    )

    $PSCmdlet.SessionState.PSVariable.Set($Name, "Set in module")
}

Export-ModuleMember -Function *