Как изменить порядок документов IIS по умолчанию с помощью Powershell?

Как изменить порядок документов IIS по умолчанию с помощью Powershell?

Как я могу убедиться?по умолчанию.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на первую позицию (или добавления его на первую позицию, если его нет в списке).

Связанный контент