Powershell を使用して IIS のデフォルトのドキュメント順序を変更するにはどうすればよいですか?

Powershell を使用して IIS のデフォルトのドキュメント順序を変更するにはどうすればよいですか?

どうすれば確認できるでしょうかデフォルト.aspx私の IIS Web サイトの最初のデフォルト ドキュメントは何ですか?

私が試してみました:

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

しかし、もしデフォルト.aspxすでにリストに含まれていると文句を言う

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

必要に応じて追加し、まだリストの一番上にない場合はどうやって移動すればよいでしょうか?

答え1

コツは、リストのどこかにすでに「default.aspx」がある場合はそれを削除することです。

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

まず default.aspx が存在するかどうかを確認し、見つかった場合は削除して、既に行ったように先頭に再度追加します。

答え2

役に立つと思われる方へ: がdefault.aspxWeb サーバーの最初のデフォルト ドキュメントになるように IIS を構成したいと考えました。そのようにしたい場合のスクリプトは次のとおりです。

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

スクリプトは、default.aspxが既定のドキュメントとして設定されているかどうかを確認します。 がdefault.aspx既定のドキュメントである場合、それがリストの先頭にあるかどうかを確認します。 がdefault.aspxリストにあるが先頭でない場合は、スクリプトはそれを削除します。 がdefault.aspx既定のドキュメントとして設定されていないか、リストの先頭でない場合は、スクリプトはそれをリストの先頭として追加します。

上記のスクリプトは、サーバー ノードをクリックし、Default Document右側のペインでダブルクリックしてdefault.aspx最初の位置に移動する (リストにない場合は最初の位置に追加する) のと同等の IIS GUI 構成です。

関連情報