簡體   English   中英

使用PowerShell替換XML節點文本

[英]Replacting XML node text using PowerShell

我的XML文檔如下

  <Batch>
  <Alter>
    <ObjectDefinition>
      <DataSources>
        <DataSource>
          <ConnectionString>Provider=SQLNCLI11.1;Data Source=ABC;Integrated Security=SSPI;Initial Catalog =TesDB1</ConnectionString>
          <ConnectionString>Provider=SQLNCLI11.1;Data Source=XYZ;Integrated Security=SSPI;Initial Catalog =TesDB1</ConnectionString>
        </DataSource>
      </DataSources>
    </ObjectDefinition>
  </Alter>
</Batch>

我想替換整個連接字符串節點,如下所示

$ConnectionString = "Provider=SQLNCLI11.1;Data Source=$DataSource;Integrated Security=SSPI;Initial Catalog =$Database"

這是我嘗試過的方法,但這僅替換了一個節點內容

$XMLA = "D:\employee.xml"
$SqlDataBase = [xml](Get-Content $XMLA)
$data = $SqlDataBase.SelectNodes("Batch/Alter/ObjectDefinition/DataSources/DataSource/ConnectionString")
#$data
$DataSource = "localhost"
foreach($xn in $data)
{

   $DataBase = $xn.'#text'.Split(";").Split("=")
   $DataBase[$DataBase.Length - 1]
   $DataBase = $DataBase[$DataBase.Length - 1]

   $ConnectionString = "Provider=SQLNCLI11.1;Data Source=$DataSource;Integrated Security=SSPI;Initial Catalog =$Database"

   $SqlDataBase.SelectSingleNode("Batch/Alter/ObjectDefinition/DataSources/DataSource/ConnectionString").InnerText = "$ConnectionString";
}
$SqlDataBase.Save($XMLA)

因此,如果有更好的方法來替換多個節點,請告訴我

這是我從此處獲取源代碼的最佳方法

在Powershell中以相似的名稱選擇XML節點

$XMLA = "D:\employee.xml"
$SqlDataBase = [xml](Get-Content $XMLA)
$data = $SqlDataBase.SelectNodes("Batch/Alter/ObjectDefinition/DataSources/DataSource/ConnectionString")
#$data
$DataSource = "localhost"

$SqlDataBase.Batch.Alter.ObjectDefinition.DataSources.DataSource.ChildNodes | Where-Object Name -Match 'ConnectionString' | ForEach-Object {

    $DataBase = $_.'#text'.Split(";").Split("=")
    $DataBase = $DataBase[$DataBase.Length - 1]

    $ConnectionString = "Provider=SQLNCLI11.1;Data Source=$DataSource;Integrated Security=SSPI;Initial Catalog =$Database"

    $_.'#text' = "$ConnectionString"
}

$SqlDataBase.Save($XMLA)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM