
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.aspx
o 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.aspx
está definido como documento padrão. Se default.aspx
for um documento padrão, verifica se é o primeiro da lista. Se default.aspx
estiver na lista, mas não for o primeiro, o script o removerá. Se default.aspx
nã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 Document
no painel direito e mover default.aspx
para a primeira posição (ou adicioná-lo na primeira posição se não estiver na lista).