sateesh
sateesh

Reputation: 615

How to work with PowerShell to change values of Web.Config file?

I am working on PowerShell. In that am trying to change the values of an existing config file values with the help of PowerShell and its working well. But I faced a new task as below and strucked here in converting the values in PowerShell to override in my config file. For this task, I referred this link

If had a Code like this :

   <?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>

How to change the values inside the service.tasks tag and system.runtime.remoting tags.

Upvotes: 1

Views: 4420

Answers (1)

starian chen-MSFT
starian chen-MSFT

Reputation: 33748

Refer to this code to update entityID value in ExpireRequirements task element (specify config file path in argument:-webCofig xxx):

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)

Upvotes: 3

Related Questions