Редактирование сконфигурированных значений Powershell - PullRequest
0 голосов
/ 27 декабря 2018

Я знаком со ссылками на узлы в powershell, но не совсем уверен, как редактировать следующие узлы, потому что каждое значение не имеет уникального идентификатора.Можно ли как-то редактировать значения, основанные на пути?Каждый путь ссылается на переменную SSIS.Мне нужно редактировать только сконфигурированное значение, но это через 15 узлов.Ниже приведены 2 примера этих узлов:

<Configuration ConfiguredType="Property" Path="\Package.Variables[User::var1].Properties[Value]" 
    ValueType="String">
        <ConfiguredValue>SomeValue</ConfiguredValue>
 </Configuration>
 <Configuration ConfiguredType="Property" Path="\Package.Variables[User::var2].Properties[Value]" 
    ValueType="String">
        <ConfiguredValue>AnotherValue</ConfiguredValue>
</Configuration>

В приведенном выше примере я пытаюсь отредактировать «someValue» на основе Path, возможно ли это?Первоначально я редактировал по номеру строки, но вскоре понял, что номера строк меняются для каждого клиентского файла.

В идеале я хотел бы просмотреть все файлы в пути к файлу и сделать это для каждого отдельного файла.

ОБНОВЛЕНО: прикреплен мой рабочий код, спасибо @ gms0ulman!

$filePath = ("\\server1\test")  #location of all files

    Foreach($file in Get-ChildItem $filePath | where {!$_.PSIsContainer}){

      $xml = [xml](Get-Content $file.FullName)
      #updating attribute
      $node = $xml.root.Configuration
      ($xml.root.Configuration | Where-Object {$_.Path -like "*var1*"}).ConfiguredValue = "newValue"
      $xml.Save($file.FullName)
    }

1 Ответ

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

Возможно:

# xml object to use in example
[xml]$xml = @"
<root>
    <Configuration ConfiguredType="Property" Path="\Package.Variables[User::var1].Properties[Value]" 
        ValueType="String">
            <ConfiguredValue>SomeValue</ConfiguredValue>
     </Configuration>
     <Configuration ConfiguredType="Property" Path="\Package.Variables[User::var2].Properties[Value]" 
        ValueType="String">
            <ConfiguredValue>AnotherValue</ConfiguredValue>
    </Configuration>
</root>
"@

# standard node dot-indexing, before
$xml.root.Configuration

# ConfiguredType Path                                             ValueType ConfiguredValue
# -------------- ----                                             --------- ---------------
# Property       \Package.Variables[User::var1].Properties[Value] String    SomeValue
# Property       \Package.Variables[User::var2].Properties[Value] String    AnotherValue


# change the value based on Path
($xml.root.Configuration | Where-Object {$_.Path -like "*var1*"}).ConfiguredValue = "newValue"


# standard node dot-indexing, after
$xml.root.Configuration

# ConfiguredType Path                                             ValueType ConfiguredValue
# -------------- ----                                             --------- ---------------
# Property       \Package.Variables[User::var1].Properties[Value] String    newValue
# Property       \Package.Variables[User::var2].Properties[Value] String    AnotherValue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...