¿Cómo puedo cambiar el orden predeterminado de los documentos de IIS usando Powershell?

¿Cómo puedo cambiar el orden predeterminado de los documentos de IIS usando Powershell?

¿Cómo puedo asegurarme?predeterminado.aspxCuál es el primer documento predeterminado para mi sitio web IIS?

Yo he tratado:

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

pero sipredeterminado.aspxya esta en la lista se queja

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

¿Cómo puedo agregarlo si es necesario y moverlo al principio de la lista si aún no está allí?

Respuesta1

El truco consiste en eliminar 'default.aspx' si ya está en algún lugar de la 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}

Primero verificamos la existencia de default.aspx, si lo encontramos, lo eliminamos y luego lo volvemos a agregar en la parte superior, tal como lo hizo ya.

Respuesta2

Para aquellos que puedan encontrarlo útil: quería configurar IIS de modo que default.aspxsea el primer documento predeterminado para el servidor web. Aquí está el guión si eso es lo que quieres hacer:

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

El script comprueba si default.aspxestá configurado como documento predeterminado. Si default.aspxes un documento predeterminado, verifica si está primero en la lista. Si default.aspxestá en la lista pero no primero, el script lo elimina. Si default.aspxno está configurado como documento predeterminado o no está primero en la lista, el script lo agrega como el primero en la lista.

El script anterior es la configuración de la GUI de IIS equivalente a hacer clic en el nodo del servidor, hacer doble clic Default Documenten el panel derecho y moverse default.aspxa la primera posición (o agregarlo en la primera posición si no está en la lista).

información relacionada