永久PowerShell变量

问题描述:

有没有办法在PowerShell中定义一个变量,所以当我打开一个新的PowerShell窗口时,它会保持相同的值?永久PowerShell变量

我需要这个变量来保持它的价值,因为我需要不时重新启动我的服务器,而且我不想失去这些值。

+0

什么是你存储在变量,你需要永远坚持下去? – JNK 2012-01-13 17:45:47

+2

那么,我有一个变量,有一个目录下的文件列表。例如,我有一个名为$ directorysnapshot = dir -r'path'的变量,该变量具有该目录下所有文件的列表,并且我希望将其保留为同一列表。我无法在启动过程中每次重新定义该变量,因为一些文件可能自此发生变化 – GwFiles 2012-01-13 18:09:45

您是否考虑过其他备用来源来存储变量? PowerShell中的变量通常只能保持与PowerShell会话本身一样长。但是还有其他几个PowerShell可以轻松查询的源代码,可以持续更长的时间。特别是注册表和文件系统。

对于意味着在重新启动时持续存在的变量,我会将它存储在注册表中,然后使用PowerShell来查询该值(可能缓存在会话变量中)。

+0

那么,我有一个变量,有一个目录下的文件列表。例如,我有一个名为$ directorysnapshot = dir -r'path'的变量,该变量具有该目录下所有文件的列表,并且我希望将它保留为同一列表。我无法在启动过程中每次重新定义该变量,因为从那以后,一些文件可能已经更改。 – GwFiles 2012-01-13 18:16:06

+1

@GwFiles如果它需要被保存,但为什么注册表是不好的地方?结果可能会在启动时持续并重新加载 – JaredPar 2012-01-13 18:26:12

您可以将数据存储在PowerShell Profile中。

+0

这就是我通常所做的。我倾向于存储诸如svn urls之类的东西,所以我可以很容易地进行合并,例如 'svn merge -c 100 $ someBranchName' – mwilson 2012-01-13 17:56:51

+0

嗯,我有一个变量,它有一个目录下的文件列表。例如,我有一个名为 $ directorysnapshot = dir -r'path' 变量,该变量具有该目录下所有文件的列表,并且我希望将其保留在同一列表中。我无法在启动过程中每次重新定义该变量,因为从那以后,一些文件可能已经更改。 – GwFiles 2012-01-13 18:07:22

要存储:

$variable|export-clixml -path $Location 

要检索:

$variable = import-clixml -path $Location 

假如把它放在一个功能,如果你想要的话,是这样的:

function LoadTHEvariable($location) 
{ 
    $global:variable = import-clixml -path $Location 
} 

$位置显然包含了地方在你想要存储变量的文件系统中。

考虑使用环境变量。

+2

注意:除非使用SETX进行设置,否则环境变量不会在重新启动时持续存在。 – Iszi 2014-07-15 02:28:00