首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PowerShell IIS设置-WebConfigurationProperty- Locked ApplicationHost.config部分

PowerShell IIS设置-WebConfigurationProperty- Locked ApplicationHost.config部分
EN

Stack Overflow用户
提问于 2014-10-30 05:30:51
回答 2查看 7.9K关注 0票数 6

我正在为我们的web应用程序和web服务编写PowerShell 3.0安装程序,但在尝试设置物理路径凭据时遇到了问题。

我的代码如下所示:

代码语言:javascript
运行
复制
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# >>>>>> Path credentials
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

# Set the physical path credentials of the web application (on Basic Settings screen) to Connect As...
$filter="/system.applicationHost/sites/site[@name='{0}' and    @id='1']/application[@path='/{1}']/VirtualDirectory[@path='/']" -f $script:WebSiteName,$appName
Set-WebConfiguration $filter -Value @{userName="$physicalPathCredentialUserID";password="$physicalPathCredentialPassword"} 

在执行时,我在PowerShell中得到一个错误,指出“这个配置节不能在这个路径上使用。当这个节在父级被锁定时就会发生这种情况”。我尝试了在身份验证部分被锁定时工作的PSPath和location标签,但它们似乎没有任何效果。我认为-Force选项可能会起作用,但是虽然没有抛出错误,但物理路径凭证似乎不能使用。

如果没有-Force选项,则会抛出错误,但PowerShell会切断消息,因此我无法确切地知道它在抱怨哪个部分,或者锁定了哪个父级。我必须假设它是Sites部分,因为我正在尝试配置: /configuration/system.applicationHost/sites/application/virtualDirectory

我对解锁和允许覆盖来保持值之间的区别感到有点困惑。PowerShell WebAdministration在这方面相当令人困惑。我不知道为什么将这些值设置为可以在IIS管理UI中设置的值会如此令人困惑。一些值使用带有丑陋字符串的Set-WebConfiguration,如上面所示,其他值使用Set-WebConfigurationProperty。如果锁定是一个已知的问题,为什么解锁没有更好的文档记录?

我不想解锁所有站点或所有应用程序。我只想解锁我必须解锁的东西,以便在默认web站点下安装的每个Web应用程序上设置配置值。

从2014和PowerShell 3.0开始,解锁或覆盖配置节的最终解决方案是什么?哪些设置接受PSPath和位置?

顺便说一句,我已经尝试了以下的变体:

代码语言:javascript
运行
复制
$filter="/system.applicationHost/sites/site[@name='{0}' and    @id='1']/application[@path='/{1}']/VirtualDirectory[@path='/']" -f $script:WebSiteName,$appName
Set-WebConfiguration $filter machine/webroot/appHost -metadata overrideMode -value Allow

但继续获得锁定部分消息,直到过滤器被退回到站点级别。

我还尝试了设置virtualDirectoryDefaults.userName和virtualDirectoryDefaults.password,这似乎不是一开始需要的,但在IISReset之后,我注意到它们确实被添加到了applicationHost.config文件的底部。我真的不希望将它们设置为默认值,因为我们的应用程序不应该影响服务器上的其他应用程序。

我很感谢你能提供的任何帮助。我肯定遗漏了一些东西,因为设置这些和其他web应用程序配置值应该不是那么困难。

问候

EN

回答 2

Stack Overflow用户

发布于 2014-10-30 05:35:25

您尝试更改的部分在IIS计算机配置中设置。您必须解锁这些部分,以便按站点设置它们。

请参阅:Programmatically unlocking IIS configuration sections in Powershell

票数 2
EN

Stack Overflow用户

发布于 2017-09-28 05:03:41

您的过滤器看起来不正确。您可以将该筛选器看作基本上是一个XPath查询。因此,如果您使用//authentication/*筛选器,那么将获得身份验证节点下的所有配置。它与XPath不完全相同,但非常接近。只需记住,您不能仅使用过滤器参数来选择像sectionGrouplocation标记这样的元数据节。

我有一个问题,我需要在服务器级别解锁Windows身份验证,这样我就可以在应用程序级别将Windows身份验证设置为不同的值。所以我不得不这样做:

代码语言:javascript
运行
复制
Set-WebConfiguration -Metadata OverrideMode -Value Allow -Filter //windowsAuthentication
Set-WebConfigurationProperty -PSPath IIS:\Sites\$WebsiteName\$AppName -Filter //windowsAuthentication -Name Enabled -Value $true

这样做的目的是在applicationHost.config文件中创建一个如下所示的部分:

代码语言:javascript
运行
复制
<location path="" overrideMode="Allow">
        <system.webServer>
            <security>
                <authentication>
                    <windowsAuthentication>
                    </windowsAuthentication>
                </authentication>
            </security>
        </system.webServer>
</location>

我相信,根据IIS,您使用该位置标记设置的任何配置都将被视为解锁。

这是添加到web应用程序本身的Web.config文件中的内容:

代码语言:javascript
运行
复制
<authentication>
    <windowsAuthentication enabled="true" />
</authentication>

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26641010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档