使用PowerShell修改IIS web.config

使用PowerShell修改IIS web.config,第1张

概述我正在尝试使用Power Shell修改web.config. 到目前为止,我可以使用以下命令替换连接字符串: Set-WebConfigurationProperty -pspath "IIS:\Sites\$Name\WS" -filter "connectionStrings/add[@name='Product.Core.WebServices.Properties.Settings.Di 我正在尝试使用Power Shell修改web.config.

到目前为止,我可以使用以下命令替换连接字符串:

Set-WebConfigurationProperty -pspath "IIS:\Sites$name\WS" -filter "connectionStrings/add[@name='Product.Core.WebServices.PropertIEs.Settings.DirectoryConnectionString']" -name "connectionString" -value "Server=SERVERname\INSTANCE1;Database=ProductDirectory.$name;Trusted_Connection=True;"

这很好用.

现在,我想在web.config的applicationSettings部分更改一些内容.
该部分看起来像:

<applicationSettings>    <Product.Core.WebServices.PropertIEs.Settings>      <setting name="LogLevel" serializeAs="String">        <value>Info</value>      </setting>      <setting name="LogDirectory" serializeAs="String">        <value>D:\temp</value>      </setting>      <setting name="LogSpecialTroubleshoot" serializeAs="String">        <value>False</value>      </setting>      <setting name="LogsqlQuerIEs" serializeAs="String">        <value>False</value>      </setting>      <setting name="Logperformance" serializeAs="String">        <value>False</value>      </setting>      <setting name="LogXmlinput" serializeAs="String">        <value>False</value>      </setting>      <setting name="LogXmlinputSeperate" serializeAs="String">        <value>False</value>      </setting>      <setting name="EnableCatchAllLogging" serializeAs="String">        <value>True</value>      </setting>      <setting name="DirectoryDatabasename" serializeAs="String">        <value>ProductDirectory</value>      </setting>    </Product.Core.WebServices.PropertIEs.Settings>   </applicationSettings>

我想更改“DirectoryDatabasename”节点.

使用:

Set-WebConfigurationProperty -pspath "IIS:\Sites$name\WS" -filter "applicationSettings" -name "test" -value "ProductDirectory.$name"

我可以更改“root”节点(applicationSettings)并添加名为“test”的属性.
但是,如果我试图“更深入”到结构中,我会收到以下错误:

WARNING: Target configuration object 'applicationSettings/Product.Core.WebServices.PropertIEs.Settings/setting[@name='DirectoryDatabasename'] is not found at path 'MACHINE/WEbroOT/APPHOST/TestM/WS'.

我正在使用以下PS:

Set-WebConfigurationProperty -pspath "IIS:\Sites$name\WS" -filter "applicationSettings/Product.Core.WebServices.PropertIEs.Settings/setting[@name='DirectoryDatabasename']" -name "test" -value "ProductDirectory.$name"

甚至没有这个工作(相同的错误):

Set-WebConfigurationProperty -pspath "IIS:\Sites$name\WS" -filter "applicationSettings/Product.Core.WebServices.PropertIEs.Settings" -name "test" -value "ProductDirectory.$name"

所以它不知何故停止工作“一级以下”applicationSettings

此外,语法如何在< value>之间更改文本?和< / value>?

解决方法 在默认网站的虚拟目录中编辑web.config文件并尝试查看和更改appSettings部分时,以下内容对我有用:
#List all appSettingsGet-WebConfigurationProperty -pspath "IIS:\Sites\Default Web Site\VirtualDir" -filter "/appSettings/add" -name *#Update specific appSettingSet-WebConfigurationProperty -pspath "IIS:\Sites\Default Web Site\VirtualDir" -filter "/appSettings/add[@key='SomeKey']" -name value -Value "SomeValue"

这假设一个标准的web.config appSettings部分,如下所示:

<configuration>    ...    <appSettings>        ...        <add key="TestKey" value="TestValue"></add>        ...    </appSettings>    ...</configuration>

在您的情况下,该值存储为文本节点而不是属性,因此完整的xpath将是/applicationSettings/Product.Core.WebServices.PropertIEs.Settings/setting[@name=’DirectoryDatabasename’] / value / text( )但是我找不到任何web.config文件的例子,其值存储为文本节点. IIS cmdlets的示例也未显示对text()的任何引用.

您可能必须设置过滤器以检索设置元素,然后将其设置为具有正确文本的值元素.示例再次没有说明如何执行此 *** 作,但它们确实显示了如何使用哈希表来设置多个值,因此您可以找到一种方法使其工作.

总结

以上是内存溢出为你收集整理的使用PowerShell修改IIS web.config全部内容,希望文章能够帮你解决使用PowerShell修改IIS web.config所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095169.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存