Как обновить глобальную переменную в другом файле в PowerShell? - PullRequest
0 голосов
/ 11 декабря 2018

Я создал один файл PowerShell с именем Config.ps1, который содержит переменные, которые используются всеми другими сценариями PowerShell.Как показано в примере ниже, он содержит закомментированный раздел (для понимания пользователя) и реальную переменную, которые обновляются во время выполнения.

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

$Global:DeploymentType = ''

Я называю этот файл config ps в другом файле сценария.Как показано ниже

$ConfigFile = Split-Path -Path $PSCommandPath
$ConfigFile = $ConfigFile + "\Config.ps1"
."$ConfigFile"

$Config = Get-Content $ConfigFile

Выполните несколько задач: 1.2.3 затем обновите переменные на основе этой задачи

$Config = $Config -creplace "DeploymentType = '[^']*'","DeploymentType = 'Full'"
$Config | Set-Content $ConfigFile -Force

Проблема заключается в том, что обновляется как комментируемая часть, так и переменная в файле конфигурации.Я просто хочу обновить значение переменной, а не закомментированную часть.Есть ли способ добиться этого?

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Вместо этого используйте этот код:

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

Он заменит только текст, который имеет конец строки после последней кавычки.

Фактически, от конфигурации зависит, как сделатьрегулярное выражение.Возможно, следует указать некоторые другие ограничения

0 голосов
/ 11 декабря 2018

вы можете написать регулярное выражение и сравнить строки на нем, например, \ $ Global:. = \ s ('')

0 голосов
/ 11 декабря 2018

Когда вы воспринимаете свой сценарий как контент, вы не знаете, какая часть комментария, а какая нет.Таким образом, вы должны заменить первый параметр метода -creplace на более конкретное регулярное выражение.Например:

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

Это означает, что это заменит следующий текст:

  • DeploymentType = ''
  • DeploymentType = 'Full'
  • DeploymentType = 'Partial'

Комментарий не будет заменен, поскольку значение равно

DeploymentType='Full/Partial'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...