如何从 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
变量的值
- 有关背景信息,请参阅 this blog post。
请注意,通常 不 建议使用此技术,因为它违反了模块提供的预期封装。在手头的例子中,$SNOWinit
作为一个 非 public 模块变量,应该被认为是一个 实现细节 ,这就是为什么您不应该依赖它在生产代码中的存在。
来自圣经,WPiA。调用操作符更神秘的用途。
# get a variable in module scope
$m = get-module counter
& $m Get-Variable count
& $m Set-Variable count 33
有一个模块具有“初始化”函数,该函数设置一个变量,该变量在模块中的其他 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
变量的值- 有关背景信息,请参阅 this blog post。
请注意,通常 不 建议使用此技术,因为它违反了模块提供的预期封装。在手头的例子中,
$SNOWinit
作为一个 非 public 模块变量,应该被认为是一个 实现细节 ,这就是为什么您不应该依赖它在生产代码中的存在。
来自圣经,WPiA。调用操作符更神秘的用途。
# get a variable in module scope
$m = get-module counter
& $m Get-Variable count
& $m Set-Variable count 33