Como posso alterar a ordem dos documentos padrão do IIS usando o Powershell?

Como posso alterar a ordem dos documentos padrão do IIS usando o Powershell?

Como posso ter certezapadrão.aspxé o primeiro documento padrão para meu site IIS?

Eu tentei:

Add-WebConfiguration //defaultDocument/files "IIS:\sites\Default Web Site\MyWebSite" -atIndex 0 -Value @{value="Default.aspx"}

mas sepadrão.aspxjá está na lista reclama

Add-WebConfiguration : Filename: 
Error: Cannot add duplicate collection entry of type 'add' with unique key attribute 'value' set to 'Default.aspx'

Como posso adicioná-lo, se necessário, e movê-lo para o topo da lista, se ainda não estiver lá?

Responder1

O truque é remover 'default.aspx' se ele já estiver em algum lugar da lista:

$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}

Primeiro verificamos a existência de default.aspx, se encontrado, removemos e depois adicionamos novamente no topo, como você já fez.

Responder2

Para aqueles que podem achar útil: eu queria configurar o IIS de forma que fosse default.aspxo primeiro documento padrão para o servidor web. Aqui está o script, se é isso que você deseja fazer:

#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
}

O script verifica se default.aspxestá definido como documento padrão. Se default.aspxfor um documento padrão, verifica se é o primeiro da lista. Se default.aspxestiver na lista, mas não for o primeiro, o script o removerá. Se default.aspxnão estiver definido como documento padrão ou não for o primeiro da lista, o script o adiciona como o primeiro da lista.

O script acima é a configuração da GUI do IIS equivalente a clicar no nó do servidor, clicar duas vezes Default Documentno painel direito e mover default.aspxpara a primeira posição (ou adicioná-lo na primeira posição se não estiver na lista).

informação relacionada