Powershell 更改存档上的指定值-PS

Powershell 更改存档上的指定值-PS,powershell,ps1,Powershell,Ps1,我在存档中有以下配置,具体到第15行,我必须更改字符串“srv-01.address”文件名为UpdateClient.config,如何在powershell上更改 <ProviderServers> <ProviderServer URL="srv-01.address" IsDefault="False" Port="8092" SecureConnection="False" Bin

我在存档中有以下配置,具体到第15行,我必须更改字符串
“srv-01.address”
文件名为
UpdateClient.config
,如何在powershell上更改

<ProviderServers>
    <ProviderServer URL="srv-01.address" IsDefault="False" Port="8092" SecureConnection="False" BindingType="BasicHttpBinding" />
  </ProviderServers>

如果是xml文件,请导入该文件并设置如下属性:

$xml = [xml](gc "FILEPATH")
$xml.ProviderServers.ProviderServer.setattribute("URL","UpdateClient.config")

一种方法是使用XPath(区分大小写)

您也可以使用不区分大小写的“dot”方法,但为了实现这一点,您没有显示足够的.config xml文件。 归根结底,您应该从根元素开始一直遵循结构

$search  = "srv-01.address"
$replace = "srv-02.address"

[xml]$xml = Get-Content -Path 'Path\To\UpdateClient.config' -Raw
$xml.providerservers.providerserver | Where-Object { $_.Url -eq $search } | ForEach-Object { $_.SetAttribute('URL', $replace) }
$xml.Save('Path\To\UpdateClient.config')
这两种方法都将更新文件以包含

<ProviderServers>
  <ProviderServer URL="srv-02.address" IsDefault="False" Port="8092" SecureConnection="False" BindingType="BasicHttpBinding" />
</ProviderServers>

<ProviderServers>
  <ProviderServer URL="srv-02.address" IsDefault="False" Port="8092" SecureConnection="False" BindingType="BasicHttpBinding" />
</ProviderServers>