初始化将导出的powershell模块变量

时间:2016-05-01 03:27:03

标签: powershell

我无法理解为什么我无法实现以下目标:

在模块中创建一组变量。 让模块中的函数执行某些操作并使用更改的值更新父作用域变量。 将模块导入到一个脚本中,该脚本调用相同的函数,并为导入模块的脚本提供更新的值。

例如 Module Lib具有以下内容:

$psVarx = -1

function Init {

   $psVarx = 2
   $script:psVarx = $psVarx
}

Export-Member -variable $psVarx

使用该模块的脚本具有以下内容:

Import-Module Lib -Force

Init

"psVarx is {0}" -f $psVarx

收到的输出是

psVarx is -1

问题是如果我更新了模块中变量的脚本作用域副本,为什么使用该模块的脚本看不到变量的更新值?我很确定这个问题与范围界定有关。我在这里缺少什么?

在模块具有初始化自身和设置变量的情况下,初始化模块变量的建议方法是什么?然后应该将这些变量用于导入模块的代码?

在这种特殊情况下,我有几十个变量,我想在模块中初始化,然后导出新初始化的值。

1 个答案:

答案 0 :(得分:5)

在PowerShell V3中,以下工作原理:

$psVarx = -1

function Init {

   $psVarx = 2
   $script:psVarx = $psVarx
}
Export-ModuleMember -variable psVarx -Function init

请注意psVarx(不是$psVarx)传递给Export-modulemember(不是导出成员)。此外还指定了Init