在Powershell中持久化用户设置

在Powershell中持久化用户设置,powershell,Powershell,我目前正在编写一个Powershell模块,可以用来控制一些智能灯泡。API的一个要求是为每个请求提供一个授权令牌。我当前有一个cmdletSet AuthorizationToken,它设置了一个$Script:作用域变量来存储此令牌 目前,我创建的所有设置功能都存在于同一灯光自动化模块中。我想将设置逻辑分离到它自己的模块中,以便可以重用 这就是我遇到麻烦的地方。据我所知,如果我将设置逻辑拉入自己的模块,那么我将无法再使用$Script:范围,因为这将与使用设置模块的任何模块共享。此外,我还必

我目前正在编写一个Powershell模块,可以用来控制一些智能灯泡。API的一个要求是为每个请求提供一个授权令牌。我当前有一个cmdlet
Set AuthorizationToken
,它设置了一个
$Script:
作用域变量来存储此令牌

目前,我创建的所有设置功能都存在于同一灯光自动化模块中。我想将设置逻辑分离到它自己的模块中,以便可以重用

这就是我遇到麻烦的地方。据我所知,如果我将设置逻辑拉入自己的模块,那么我将无法再使用
$Script:
范围,因为这将与使用设置模块的任何模块共享。此外,我还必须重构当前设置功能,以提供某种标识符,以便设置模块可以为调用者查找正确的设置


是否有某种方法可以创建设置模块以便重用它,但加载方式可能只允许它知道加载它的模块?也许像是某种“图书馆”?我不希望将ps1文件复制到每个模块中,但目前这似乎是最好的方法。

处理此问题的典型方法似乎是将您的凭据作为加密字符串存储在文件中,然后具有加载这些凭据的功能


例如:

如果您有表示要将设置加载到的目标模块的
PSModuleInfo
对象,那么您可以在其中填充
$Script:
范围变量,如下所示:
&$module{$Script:settings=$args[0]}$PersistentSettings
。这就是我现在所拥有的。我希望有一种方法可以像dll那样从应用程序根目录加载文件。但从我迄今为止的研究来看,我见过这样的事情,除非我在每次调用模块时为模块提供一条路径。