我正在为我们的web应用程序和web服务编写PowerShell 3.0安装程序,但在尝试设置物理路径凭据时遇到了问题。
我的代码如下所示:
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# >>>>>> 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和位置?
顺便说一句,我已经尝试了以下的变体:
$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应用程序配置值应该不是那么困难。
问候
发布于 2014-10-30 05:35:25
您尝试更改的部分在IIS计算机配置中设置。您必须解锁这些部分,以便按站点设置它们。
请参阅:Programmatically unlocking IIS configuration sections in Powershell
发布于 2017-09-28 05:03:41
您的过滤器看起来不正确。您可以将该筛选器看作基本上是一个XPath查询。因此,如果您使用//authentication/*筛选器,那么将获得身份验证节点下的所有配置。它与XPath不完全相同,但非常接近。只需记住,您不能仅使用过滤器参数来选择像sectionGroup或location标记这样的元数据节。
我有一个问题,我需要在服务器级别解锁Windows身份验证,这样我就可以在应用程序级别将Windows身份验证设置为不同的值。所以我不得不这样做:
Set-WebConfiguration -Metadata OverrideMode -Value Allow -Filter //windowsAuthentication
Set-WebConfigurationProperty -PSPath IIS:\Sites\$WebsiteName\$AppName -Filter //windowsAuthentication -Name Enabled -Value $true这样做的目的是在applicationHost.config文件中创建一个如下所示的部分:
<location path="" overrideMode="Allow">
        <system.webServer>
            <security>
                <authentication>
                    <windowsAuthentication>
                    </windowsAuthentication>
                </authentication>
            </security>
        </system.webServer>
</location>我相信,根据IIS,您使用该位置标记设置的任何配置都将被视为解锁。
这是添加到web应用程序本身的Web.config文件中的内容:
<authentication>
    <windowsAuthentication enabled="true" />
</authentication>希望这能有所帮助。
https://stackoverflow.com/questions/26641010
复制相似问题