
Wie kann ich sicherstellen, dassStandardmäßig.aspxist das erste Standarddokument für meine IIS-Website?
Ich habe versucht:
Add-WebConfiguration //defaultDocument/files "IIS:\sites\Default Web Site\MyWebSite" -atIndex 0 -Value @{value="Default.aspx"}
aber fallsStandardmäßig.aspxist bereits in der Liste, es beschwert sich
Add-WebConfiguration : Filename:
Error: Cannot add duplicate collection entry of type 'add' with unique key attribute 'value' set to 'Default.aspx'
Wie kann ich es bei Bedarf hinzufügen und an den Anfang der Liste verschieben, wenn es dort noch nicht steht?
Antwort1
Der Trick besteht darin, „default.aspx“ zu entfernen, wenn es sich bereits irgendwo in der Liste befindet:
$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}
Wir prüfen zunächst, ob default.aspx vorhanden ist. Wenn es gefunden wird, entfernen wir es und fügen es dann oben wieder hinzu, so wie Sie es bereits getan haben.
Antwort2
Für diejenigen, die es vielleicht nützlich finden: Ich wollte IIS so konfigurieren, dass dies default.aspx
das erste Standarddokument für den Webserver ist. Hier ist das Skript, falls Sie das tun möchten:
#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
}
Das Skript prüft, ob default.aspx
als Standarddokument festgelegt ist. Wenn default.aspx
es ein Standarddokument ist, prüft es, ob es an erster Stelle in der Liste steht. Wenn default.aspx
es in der Liste, aber nicht an erster Stelle steht, entfernt das Skript es. Wenn default.aspx
es nicht als Standarddokument festgelegt ist oder nicht an erster Stelle in der Liste steht, fügt das Skript es als erstes in der Liste hinzu.
Das obige Skript entspricht in der IIS-GUI-Konfiguration dem Klicken auf den Serverknoten, einem Doppelklick Default Document
im rechten Bereich und dem Verschieben default.aspx
zur ersten Position (oder dem Hinzufügen an der ersten Position, wenn es nicht in der Liste enthalten ist).