因此请注意,如果我错过了明显的内容,我仍然对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
/详细
答案 0 :(得分:0)
变量具有范围,并且仅在定义的范围内可用。内置帮助文件中对此进行了记录:
Get-Help -Name about_Scopes
关闭会话后,所有资源都将耗尽。
您可以将要使用的任何代码或值放在静态文件中,然后可以使用脚本根据需要读回。将该文件存储在中央文件共享上,以便您可以从允许访问该文件的任何计算机上访问该文件。
或者您可以创建并使用PowerShell配置文件来保存您选择的任何环境配置。
Get-Help -Name about_Profiles
配置文件只是位于当前用户配置文件文件夹中的另一个.ps1。每次启动PowerShell时,配置文件中的所有内容都会加载。不管PowerShell加载后将做什么。