我有很多web.config文件。哪個URL包含機器名稱。如何使用PowerShell更新[xml]屬性中的字符串?
這是我的樣本web.config文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.Model>
<client>
<endpoint address="http://MyMachineName:80/MyProj/Core/NewService/SecurityObject.0/Secretservice.svc" binding="basicHttpBinding" bindingConfiguration="MyProj_Internal_Routing" behaviorConfiguration="UserSIDBehavior" contract="SecurityMgmt.SecurityMgmtContract" name="HttpEndpointSecMgt" />
<endpoint address="http://MyMachineName:80/MyProj/Core/DataObject/SystemCatalogs1.0/DataObjectservice/DataObjectservice.svc" binding="basicHttpBinding" bindingConfiguration="MyProj_Internal_Routing" behaviorConfiguration="UserSIDBehavior" contract="DataObjectservice.SystemCatalogsDataObjectservice" name="BasicHttpBinding_SystemCatalogsDataObjectservice" />
<endpoint address="http://MyMachineName:80/MyProj/Core/NewService/Movement.0/Movement.svc" binding="basicHttpBinding" bindingConfiguration="MyProj_Internal_Routing" behaviorConfiguration="UserSIDBehavior" contract="NavigationClientLib.NavigationNewService" name="BasicHttpBinding_NavigationNewService" />
</client>
<system.Model>
</configuration>
當用戶更改計算機名這在所有的XML文件進行更新。
我決定編寫一個這樣的函數。
Function Update-MachineName ([string] $FilePath,[string] $xpath, [string] $NewMachineName="NewComputer") {
# Get the config file contents
$WebConfig = [XML] (Get-content $Filepath)
#Find the url using xpath which has old Machine name
$hostnameString= Select-XML -XML $WebConfig -XPath $Xpath
Foreach ($hostname in $hostnameString) {
if (($hostname.Node.value -match 'http') -eq $true) {
$hostname.Node.value
$MachineOldName = $($($hostname.Node.value.split("/"))[2].split(":"))[0]
$MachineOldName
$hostname.Node.value.replace($MachineOldName,$NewMachineName)
}
}
$WebConfig.Save($FilePath)
}
Update-MachineName "C:\web.config" "//@address"
儘管我用新的機器名稱替換,但web.config內容仍未更新。如何使用新機器名更新
:我已經加入保存功能也,但仍然沒有使用($ WebConfig.Save($文件路徑)) – Samselvaprabu