【发布时间】:2021-10-27 13:32:18
【问题描述】:
我正在尝试取消注释第二个身份验证元素。但是,在取消注释 ' -->' 时,它会替换所有 ' -->' 元素。我们只希望取消注释第二个元素。
### Webconfig.xml ###
<webApi.webServer dateTimeZoneHandling="Local">
<!-- <authentication authenticationType="Windows" sessionTimeout="00:10:00" /> -->
<!-- <authentication authenticationType="Token" sessionTimeout="00:10:00" refreshTokenTimeout="99:00:00">
<tokenValidation validAudiences="e6b0f93b60250" securitykey="YmFzZT" validIssuers="WebApi"/>
</authentication> -->
Token_replace.ps1
$web_service_config_path= [IO.Path]::Combine("D:\Scripts\Powershell","Web_Sample.config")
$xml = (Get-Content $web_service_config_path)
$start_tag = $false
$end_tag = $false
foreach ($line in $xml) {
Write-Host $line
$r = $line -match '^\s*<!--\s*<authentication authenticationType="Token"\s*sessionTimeout="00:10:00"\w*'
Write-Host $r
if($line -match '^\s*<!--\s*<authentication authenticationType="Token"\s*sessionTimeout="00:10:00"\w*' )
{
if($start_tag -eq $false)
{
$xml = $xml -replace '^\s*<!--\s*<authentication authenticationType="Token"\s*sessionTimeout="00:10:00"', '<authentication authenticationType="Token" sessionTimeout="00:30:00"'
$pattern = '</authentication>\s*-->'
$start_tag = $true
}
}
if($line -match $pattern -and $start_tag -eq $true)
{
$xml = $xml -replace '</authentication>\s*-->', '</authentication>'
$end_tag = $true
}
if($start_tag -eq $true -and $end_tag -eq $true)
{
break
}
}
$xml|Out-File -FilePath "D:\Scripts\Powershell\Web_new.config"
【问题讨论】:
-
您想取消对第二个
<!-- <authentication authenticationType="Token"的注释,同时也取消对</authentication> -->的下一次出现的注释,或者只是取消对第二个的注释就可以了? -
我想取消注释下一次出现的 --> 以及...基本上是整个第二个身份验证块。
-
我们还没有收到您的来信.. 任何给定的答案是否解决了您的问题?如果是这样,请通过单击左侧的 ✓ 图标来考虑accepting。这将帮助其他有类似问题的人更轻松地找到它,并有助于激励其他人回答您将来可能遇到的任何问题。
标签: xml powershell