
Как я могу убедиться?по умолчанию.aspxявляется первым документом по умолчанию для моего веб-сайта IIS?
Я пытался:
Add-WebConfiguration //defaultDocument/files "IIS:\sites\Default Web Site\MyWebSite" -atIndex 0 -Value @{value="Default.aspx"}
но еслипо умолчанию.aspxуже в списке он жалуется
Add-WebConfiguration : Filename:
Error: Cannot add duplicate collection entry of type 'add' with unique key attribute 'value' set to 'Default.aspx'
Как я могу добавить его при необходимости и переместить в начало списка, если его там еще нет?
решение1
Хитрость заключается в том, чтобы удалить «default.aspx», если он уже есть где-то в списке:
$filter = "system.webserver/defaultdocument/files"
$site = "IIS:\sites\Default Web Site\MyWebSite"
$file = "default.aspx"
if ((Get-WebConfiguration $filter/* "$site" | where {$_.value -eq $file}).length -eq 1)
{
Remove-WebconfigurationProperty $filter "$site" -name collection -AtElement @{value=$file}
}
Add-WebConfiguration $filter "$site" -atIndex 0 -Value @{value=$file}
Сначала мы проверяем наличие default.aspx, если он найден, удаляем его, а затем добавляем обратно наверх, как вы уже сделали.
решение2
Для тех, кому это может пригодиться: я хотел настроить IIS таким образом, чтобы это default.aspx
был первый документ по умолчанию для веб-сервера. Вот скрипт, если это то, что вы хотите сделать:
#requires -RunAsAdministrator
$file = "default.aspx"
$baseFilter = "/system.webServer/defaultDocument/files"
$filter = "{0}/add[@value='{1}']" -f $baseFilter,$file
$fileExists = $null -ne (Get-WebConfigurationProperty $filter -Name ".")
$updateConfig = -not $fileExists
if ( $fileExists ) {
$firstValue = Get-WebConfiguration "$baseFilter/*" |
Select-Object -ExpandProperty value -First 1
$updateConfig = $firstValue -ne $file
if ( $updateConfig ) {
Clear-WebConfiguration $filter -Verbose
}
}
if ( $updateConfig ) {
Add-WebConfiguration $baseFilter -AtIndex 0 -Value @{value = $file} -Verbose
}
Скрипт проверяет, default.aspx
установлен ли он в качестве документа по умолчанию. Если default.aspx
это документ по умолчанию, он проверяет, является ли он первым в списке. Если default.aspx
он есть в списке, но не первый, скрипт удаляет его. Если default.aspx
он не установлен в качестве документа по умолчанию или не первый в списке, скрипт добавляет его первым в список.
Приведенный выше сценарий представляет собой эквивалент конфигурации графического интерфейса IIS, который выполняется путем щелчка по узлу сервера, двойного щелчка Default Document
на правой панели и перехода default.aspx
на первую позицию (или добавления его на первую позицию, если его нет в списке).