
どうすれば確認できるでしょうかデフォルト.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.aspx
Web サーバーの最初のデフォルト ドキュメントになるように 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 構成です。