如何从模块设置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 *