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

问题描述 投票:2回答:1

所以预警,如果我错过了一些明显的东西,我仍然对powershell很新,所以道歉。

我有几个脚本命令,我定期运行,在我们的RDS服务器上做与AD相关的东西。有3个服务器,用户可以在登录时转储到其中任何一个。很多命令我想做的事情不起作用如果你指定了错误的计算机,并检查用户在哪一个是一种痛苦。

我想要做的是创建一个$ RDS_Servers变量,该变量在PS会话和重新启动之间持续存在,因此我不必每次都输入它并完成所有工作。我希望它是一个专门用于多功能性的$变量。我已经想出如何将它保存为脚本,以便可以通过RDS_Servers.ps1调用它,但这很笨拙,很难插入到动态编写的脚本中,而不是一个漂亮的$变量。

到目前为止我所做的是运行以下内容:

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

这将返回RDS服务器OU中所有对象的列表,这就是我想要的。包含可以按需调用的对象的变量。这被分配给$ RDS_Servers,并且可以转储到脚本中,例如通过Get-ADuser -computer $ RDS_Server -user UserX等搜索用户AD对象,这样它就可以找到它们而无需查找它们的服务器'继续。

这里的问题是虽然这在每个会话的基础上运行良好和花花公子,我想要做的事情是以某种方式将$ RDS_Servers保存为会话之间持续存在的“默认”变量,这样如果我想做一些工作在AD用户上PS,我每次只需插入$ RDS_Servers,而不必每次会话都指定变量。

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

/详细

powershell variables
1个回答
0
投票

变量具有范围,它们仅在定义的范围内可用。这在内置帮助文件中有记录:

About_Scopes

Get-Help -Name about_Scopes

关闭会话后,所有资源都消失了。

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

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

About_Profiles

Get-Help -Name about_Profiles

该配置文件只是另一个.ps1,位于当前用户配置文件文件夹中。每次PowerShell启动时都会加载配置文件中的任何内容。无论PowerShell加载后你会做什么。

© www.soinside.com 2019 - 2024. All rights reserved.