【问题标题】:Powershell Search ApplicationHost.config file and replace valuePowershell 搜索 ApplicationHost.config 文件并替换值
【发布时间】:2019-05-25 05:07:36
【问题描述】:

我需要修改默认位于 c:\windows\System32\inetsrv\config 的 applicationHost.config 文件。

查看 XML 文件,在配置中有许多位置条目。我只需要修改一个特定的。也许在修改它之前先检查它是否存在?

以下 XML 是我要修改的内容。嵌套在顶级配置下。如果发现为假,我只想更改一项,anonymousAuthentication enabled="true"。

<location path="Default Web Site/MyWebsite/SiteA">
    <system.webServer>
        <security>
            <authentication>
                <digestAuthentication enabled="false" />
                <basicAuthentication enabled="false" />
                <anonymousAuthentication enabled="false" />
                <windowsAuthentication enabled="true">
                    <providers>
                        <clear />
                        <add value="Negotiate" />
                        <add value="NTLM" />
                    </providers>
                </windowsAuthentication>
            </authentication>
        </security>
    </system.webServer>
</location>

附注。我确实看到我可以使用 set-webconfigurationproperty。但是,当我这样做时,它告诉我配置部分不能在此路径中使用。当该部分锁定在父级别时会发生这种情况。我正在使用 PSPath,它应该可以解决这个问题,但它不起作用。

【问题讨论】:

  • 关于您的旁注,您可能需要进入 IIS 服务器 (inetmgr.cpl) 的功能委托并设置身份验证 - 匿名读取/写入,然后再次尝试使用 set-webconfigurationproperty

标签: xml powershell


【解决方案1】:

这样的事情应该可以解决问题。 我建议您创建 Applicationhost 的备份副本,以便在需要时可以恢复。

您需要以管理员身份运行该脚本。

诀窍是利用SelectNodesSelectSingleNode 并定位您感兴趣的特定节点。我使用您提供的代码来指定我正在寻找您感兴趣的节点,但仅在位置路径对应的位置"默认网站/MyWebsite/SiteA"

$InetConfigPath = 'c:\windows\System32\inetsrv\config\applicationHost.config'
$xml = [xml](get-content -Path $InetConfigPath -Raw)


$Nodes = $xml.SelectNodes('//location[@path="Default Web Site/MyWebsite/SiteA"]/system.webServer/security/authentication/anonymousAuthentication')
foreach ($Node in $nodes) {
    if ($Node.enabled -eq $false) {
        $Node.enabled = 'true'
    }
}


$xml.Save($InetConfigPath)
  • 建议使用 WebAdministration 模块而不是直接修改 ApplicationHost.config 文件以避免意外后果。

参考文献

Select Nodes Using XPath Navigation

【讨论】:

  • 好的,谢谢!抱歉,我错过了对我的问题的答复。我最终使用了 WebAdministration 模块,因为这个文件似乎更安全。
猜你喜欢
  • 1970-01-01
  • 2016-09-22
  • 2020-05-12
  • 2020-08-24
  • 1970-01-01
  • 2019-04-19
  • 2022-11-28
  • 1970-01-01
  • 2012-12-27
相关资源
最近更新 更多