Sco*_*ott 6 iis powershell configuration credentials locked
我正在为我们的 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"}
Run Code Online (Sandbox Code Playgroud)
执行时,我在 PowerShell 中收到一条错误消息,指出“无法在此路径上使用此配置部分。当该部分被锁定在父级别时会发生这种情况”。我尝试了在 Authentication 部分被锁定时工作的 PSPath 和 location 标签,但这些似乎没有任何效果。我想也许 -Force 选项会起作用,但是虽然没有抛出错误,但物理路径凭据似乎没有被采用。
如果没有 -Force 选项,则会抛出错误,但 PowerShell 会切断该消息,因此我无法确切知道它抱怨的是哪个部分,或者哪个父级别被锁定。我必须假设它是站点部分,因为我正在尝试配置:/configuration/system.applicationHost/sites/application/virtualDirectory
我对解锁和允许覆盖以使值保持不变之间的区别有点困惑。PowerShell WebAdministration 在这方面非常混乱。我不知道为什么将作为推论的值设置为可以在 IIS 管理 UI 中设置的值必须如此混乱。一些值使用带有丑陋字符串的 Set-WebConfiguration,如上所示,其他值使用 Set-WebConfigurationProperty。如果锁定是一个已知问题,为什么没有更好地记录解锁?
我不想解锁所有网站或所有应用程序。我只想解锁我必须要做的事情,以便在我在默认网站下安装的每个 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
Run Code Online (Sandbox Code Playgroud)
但继续获得锁定部分消息,直到过滤器退回到站点级别。
我还尝试设置virtualDirectoryDefaults.userName 和virtualDirectoryDefaults.password,最初似乎没有采用,但是在IISReset 之后,我注意到它们确实被添加到applicationHost.config 文件的底部。我真的不希望它们设置为默认值,因为我们的应用程序不应该影响服务器上的其他应用程序。
感谢您提供的任何帮助。我一定遗漏了一些东西,因为设置这些和其他 Web 应用程序配置值应该不难。
问候
| 归档时间: |
|
| 查看次数: |
7644 次 |
| 最近记录: |