Wie kann ich die IIS-Standarddokumentreihenfolge mit Powershell ändern?

8

Wie kann ich sicherstellen, dass default.aspx das erste Standarddokument für meine IIS-Website ist?

Ich habe versucht:

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

aber wenn default.aspx bereits in der Liste ist, beschwert es 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 noch nicht vorhanden ist?

shamp00
quelle

Antworten:

13

Der Trick besteht darin, 'default.aspx' zu entfernen, wenn es sich bereits an einer beliebigen Stelle 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 die Datei default.aspx vorhanden ist. Wenn sie gefunden wurde, entfernen Sie sie und fügen Sie sie dann wieder oben hinzu, so wie Sie es bereits getan haben.

Peter Hahndorf
quelle
Hiermit erhalte ich eine Fehlermeldung, wenn ein Duplikat vorhanden ist: Es kann kein doppelter Sammlungseintrag vom Typ 'add' hinzugefügt werden, wobei das eindeutige Schlüsselattribut 'value' auf 'Default.aspx' gesetzt ist . Es scheint am Get-WebConfigurationcmdlet
ganjeii
@ganjeli - Dies geschieht, wenn auf Serverebene bereits ein default.aspx-Eintrag vorhanden ist. Ich kann nicht sagen, wie ich das beheben soll, da ich seit mehreren Wochen keinen PC mehr habe.
Peter Hahndorf