如何在PowerShell中另一个文件中更新全局变量?

时间:2018-12-11 12:37:59

标签: powershell

我创建了一个名为ups_tracking_nbr的PowerShell文件,其中包含所有其他PowerShell脚本使用的变量。按照下面的示例,它包含带注释的部分(供用户理解)和实际变量,它们在运行时会更新。

rn

我正在另一个脚本文件中调用该config ps文件。像下面一样

Config.ps1

执行一些任务:1.2.3然后根据这些任务更新变量

<#$Global:DeploymentType = 'Full/Partial'#>

$Global:DeploymentType = ''

问题是,配置文件中的注释部分和变量都正在更新。我只想更新变量值,而不要评论部分。有什么办法做到这一点?

3 个答案:

答案 0 :(得分:2)

改为使用以下代码:

$Config = $Config -creplace "DeploymentType = '[^']*'$","DeploymentType = 'Full'"

它只会替换在最后一个引号后有行尾的文本。

这实际上取决于您的配置如何制作正则表达式。可能应该指定一些其他限制

答案 1 :(得分:0)

当您将脚本作为内容时,您不知道哪个是注释的一部分,哪些不是注释的一部分。因此,您必须将方法-creplace的第一个参数替换为更特定的正则表达式。例如:

$Config = $Config -creplace "DeploymentType = \'(Full|Partial){0,1}\'","DeploymentType = 'Full'"

这意味着它将替换以下文本:

  • DeploymentType =''
  • DeploymentType =“已满”
  • DeploymentType ='部分'

该注释将不会被替换,因为该值为

DeploymentType='Full/Partial'

答案 2 :(得分:0)

u可以编写正则表达式并像上面比较行 \ $ Global:。 = \ s ('')