如何使用PowerShell更改Web.Config文件的值?

如何使用PowerShell更改Web.Config文件的值?,powershell,web-config,azure-pipelines-release-pipeline,Powershell,Web Config,Azure Pipelines Release Pipeline,我在PowerShell上工作。在这种情况下,我试图在PowerShell的帮助下更改现有配置文件的值,并且它运行良好。 但我面临一项新任务,如下所示,并在这里艰难地将PowerShell中的值转换为配置文件中的覆盖。对于这项任务,我引用了以下内容 如果有这样的代码: <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name

我在PowerShell上工作。在这种情况下,我试图在PowerShell的帮助下更改现有配置文件的值,并且它运行良好。 但我面临一项新任务,如下所示,并在这里艰难地将PowerShell中的值转换为配置文件中的覆盖。对于这项任务,我引用了以下内容

如果有这样的代码:

   <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="service.tasks" type="HRNetTaskService.TaskConfigurationSection, TaskService" />

  </configSections>
  <connectionStrings>
    <add name="Production" connectionString="" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="RestServiceUrl" value="XXXXXXXXXXX" />   
  </appSettings>

  <service.tasks>
    <tasks>
      <!-- App.config specified tasks are always recurring starting from whenever The Service first schedules it -->

      <task name="ExpireRequirements" taskName="ExpireRequirements" recurrenceFactor="1" recurrenceType="Days" executeTime="01:00">
        <parameters>
          <param key="entityID">00000000-0000-0000-0000-000000000E01</param>
        </parameters>
      </task>
      <task name="RequestExpiredRequirementsTask" taskName="RequestExpiredRequirementsTask" recurrenceFactor="1" recurrenceType="Days" executeTime="01:00">
        <parameters>
          <param key="entityID">00000000-0000-0000-0000-000000000E01</param>
          <param key="CopyBatchSize">50</param>
        </parameters>
      </task>
      <task name="UpdateRequirementChecksEffectiveDateTask" taskName="UpdateRequirementChecksEffectiveDateTask" recurrenceFactor="1" recurrenceType="Days" executeTime="01:00">
        <parameters>
          <param key="entityID">00000000-0000-0000-0000-000000000E01</param>
        </parameters>
      </task>     
      <task name="PeoplenetMatchAssignmentRefresh" taskName="PeoplenetMatchAssignmentRefresh">
        <parameters>
          <param key="checkInterval">300000</param>
          <param key="batchCount">100</param>
        </parameters>
      </task>
    </tasks>
  </service.tasks>

  <system.net>
    <connectionManagement>
      <add address="*" maxconnection="48" />
    </connectionManagement>
  </system.net>
  <system.runtime.remoting>
    <application name="server">
      <channels>
        <channel ref="tcp" port="8090">
          <serverProviders>
            <formatter ref="soap" typeFilterLevel="Full" />
            <formatter ref="binary" typeFilterLevel="Full" />
          </serverProviders>
        </channel>
      </channels>
    </application>
  </system.runtime.remoting>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup> 

</configuration>

00000000-0000-0000-0000-000000000 E01
00000000-0000-0000-0000-000000000 E01
50
00000000-0000-0000-0000-000000000 E01
300000
100

如何更改service.tasks标记和system.runtime.remoting标记内的值。

请参阅此代码以更新ExpireRequirements任务元素中的entityID值(在参数中指定配置文件路径:
-webCofig xxx
):


并可能有助于提供web.config文件的全部代码。@开始更新我的问题后会发生什么
param(
[string]$webConfig
)
 $doc = (Get-Content $webConfig) -as [Xml]
 $root=$doc.get_DocumentElement()
 $ExpireRequirementsTask=$root."service.tasks"."tasks"."task" | where {$_.name -eq 'ExpireRequirements'}
 Write-Output $ExpireRequirementsTask
 $ExpireRequirementsTaskEntityID=$ExpireRequirementsTask."parameters"."param" | where {$_.key -eq 'entityID'}
 Write-Output $ExpireRequirementsTaskEntityID
 $ExpireRequirementsTaskEntityID.InnerText="11111111-0000-0000-0000-000000000E01"
 $doc.Save($webConfig)