如何从 PowerShell 中的模块 运行 space 获取变量?

How do I get a variable from a module run space in PowerShell?

有一个模块具有“初始化”函数,该函数设置一个变量,该变量在模块中的其他 scripts/functions 中使用,以验证初始化函数是 运行。像

Start-InitializeThing
Connect to the API
    
$Script:SNOWinit = $true

然后在另一个 script/function 中它将检查:

if ($Script:SNOWinit -eq $true) { Do the thing!}

有没有办法在同一个 PowerShell window 但不是同一个模块中获取 $Script:SNOWinit?

我想 运行 进行相同的检查,但针对的是模块中没有的不同功能。

我可以这样做吗,我可以像模块 运行 空间一样“挖掘”并检查该变量。我没有办法编辑模块中的函数,所以一旦初始化脚本具有 运行.

,我就无法更改设置的变量类型

假设感兴趣的模块名为foo 并且它已经被导入(加载):

. (Get-Module foo) { $SNOWinit }

如果要导入模块按需:

. (Import-Module -PassThru foo) { $SNOWinit }
  • 上面returns定义在模块foo.

    根范围内的$SNOWinit变量的值
  • 请注意,通常 建议使用此技术,因为它违反了模块提供的预期封装。在手头的例子中,$SNOWinit 作为一个 非 public 模块变量,应该被认为是一个 实现细节 ,这就是为什么您不应该依赖它在生产代码中的存在。

来自圣经,WPiA。调用操作符更神秘的用途。

# get a variable in module scope
$m = get-module counter
& $m Get-Variable count
& $m Set-Variable count 33