保存自定义$变量以在不同的PS会话中访问

时间:2019-02-25 00:32:15

标签: powershell variables

因此请注意,如果我错过了明显的内容,我仍然对Powershell还是很陌生。

我有一些脚本命令,我会定期运行这些命令来在我们的RDS服务器上执行与AD相关的工作。有3台服务器,登录时可以将用户转储到其中任何一台上。我要执行的许多操作命令不起作用如果您指定的计算机错误,并检查用户所在的计算机,是一种痛苦。

我想做的是制作一个$ RDS_Servers变量,该变量在PS会话和重新启动之间持续存在,因此我不必每次都键入它并进行繁琐的工作。我希望它是专门针对多功能性的$ variable。我已经弄清楚了如何将其另存为脚本,以便可以通过RDS_Servers.ps1对其进行调用,但是与笨拙的$ variable相比,它笨拙且难以即时插入编写的脚本中。

到目前为止,我正在执行以下操作:

$ RDS_Servers = Get-ADComputer -Filter * -SearchBase“ OU = 2016 RDS,OU =远程桌面,OU =服务器,OU =计算机,OU = XXX,DC = XXX,DC = XXX,DC = XXX” < / p>

这将返回RDS服务器OU中所有对象的列表,这是我想要的。包含可以按需调用的对象的变量。这已分配给$ RDS_Servers,并且可以转储到脚本中,例如,通过诸如Get-ADuser -computer $ RDS_Server -user UserX之类的内容搜索用户AD对象,以便无需查找它们的服务器即可找到它们。上。

这里的问题是,尽管这在每个会话上都可以正常工作,但我想要做的事情是以某种方式将$ RDS_Servers保存为在会话之间持久存在的“默认”变量,因此如果我想这样做在PS上对AD用户的一些工作,我每次可以只插入$ RDS_Servers,而不必在每个会话中都指定变量。

tl; dr不知道如何在会话之间保存变量,请暂停:o

/详细

1 个答案:

答案 0 :(得分:0)

变量具有范围,并且仅在定义的范围内可用。内置帮助文件中对此进行了记录:

About_Scopes

Get-Help -Name about_Scopes

关闭会话后,所有资源都将耗尽。

您可以将要使用的任何代码或值放在静态文件中,然后可以使用脚本根据需要读回。将该文件存储在中央文件共享上,以便您可以从允许访问该文件的任何计算机上访问该文件。

或者您可以创建并使用PowerShell配置文件来保存您选择的任何环境配置。

About_Profiles

Get-Help -Name about_Profiles

配置文件只是位于当前用户配置文件文件夹中的另一个.ps1。每次启动PowerShell时,配置文件中的所有内容都会加载。不管PowerShell加载后将做什么。