我正在使用
添加WebDAV authoringRuleAdd-WebConfiguration /system.webserver/webdav/authoringRules -PSPath IIS: -Location "$site_name/$app_name/VD" -Value @{users="*";path="*";access="Read,Write"}
在某些环境中,这与父元素中的相同创作规则相冲突,从而抛出错误。我想在authoringRules的开头添加一个clear元素,使其看起来像这样
<authoringRules>
<clear />
<add users="*" path="*" access="Read, Write" />
</authoringRules>
但是Clear-WebConfiguration
只清除现有的规则。如何使用powershell在配置文件中添加<clear />
元素?
我想你指的是applicationHost.config。
我还发现这是WebAdministration命令集的问题,我使用ServerManager类解决了这个问题。我的特殊问题是windowsAuthentication提供程序集合,但我看不出为什么这对你不起作用。
你可能需要纠正GetSection调用中的路径,但这应该会让你非常接近你需要的。
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration") | Out-Null
$serverManager = new-object Microsoft.Web.Administration.ServerManager
$config = $serverManager.GetApplicationHostConfiguration()
$authoringRulesSection = $config.GetSection("/system.webserver/webdav/authoringRules", "$($site_name)/$($app_name)/VD");
# Grab a reference to the collection of authoringRules
$authoringRulesCollection = $authoringRulesSection.GetCollection("authoringRules");
# Clear the current collection this also adds the <clear /> tag
$authoringRulesCollection.Clear();
# Add to the collection
$addElement = $authoringRulesCollection.CreateElement("add")
$addElement["users"] = "*";
$addElement["path"] = "*";
$addElement["access"] = "Read, Write";
$authoringRulesCollection.Add($addElement);
# Save the updates
$serverManager.CommitChanges();