Как добавить заблокировать с помощью Remove-WebConfigurationProperty в web.config? - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь добавить ключ <remove /> в web.config, чтобы удалить модуль WebDAV. В настоящее время конфигурация для web.config ...

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>  
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\Server.Host.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    </system.webServer>
  </location>
</configuration>

... и я хотел бы обновить его программно с помощью PowerShell до следующего ...

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <modules>
        <remove name="WebDAVModule" />
      </modules>    
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\Server.Host.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    </system.webServer>
  </location>
</configuration>

I пытались использовать модуль PowerShell IIS Remove-WebConfigurationProperty, но я не могу заставить его добавить блок.

Remove-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST/Default Web Site/webapp'  -Filter "system.webServer/modules" -Name "WebDAVModule" -Location "."

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 17 июня 2020

Спасибо @Theo, это было хорошее предложение. Я использовал следующий сценарий PowerShell для обновления файла web.config.

$PathWebConfig = "C:\web.config";
[xml]$xmlDoc = Get-Content($PathWebConfig);
$Node = $xmlDoc.configuration.location.'system.webServer'.modules;

if ($Node -eq $null) {
    Write-Host "Node doesn't exist.";
    $xmlNodeModules = $xmlDoc.CreateNode("element","modules","");
    $xmlKeyRemove = $xmlDoc.CreateNode("element","remove","");
    $xmlKeyRemove.SetAttribute("name","WebDAVModule");
    $xmlNodeModules.AppendChild($xmlKeyRemove) | Out-Null;
    $xmlDoc.configuration.location.'system.webServer'.AppendChild($xmlNodeModules) | Out-Null;
    $xmlDoc.save($PathWebConfig);
} else {
    Write-Host "Node exists.";

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...