
¿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.aspx
sea 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.aspx
está configurado como documento predeterminado. Si default.aspx
es un documento predeterminado, verifica si está primero en la lista. Si default.aspx
está en la lista pero no primero, el script lo elimina. Si default.aspx
no 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 Document
en el panel derecho y moverse default.aspx
a la primera posición (o agregarlo en la primera posición si no está en la lista).