19

PowerShellコマンド(New-WebSiteなど)を使用してWebサイトを作成し、サイトのpreloadEnabled = "true"を設定することはできますか?

4

7 に答える 7

28

これでうまくいくはずです。を使用して、get-itemproperty機能したことを確認できます。PowerShell内のどこにpreloadEnabledあるかを理解するのに少し時間がかかりましたが、サイトパスをにパイプするとget-member、そこから作業を進めることができます。

import-module webadministration
set-itemproperty IIS:\Sites\SiteName -name applicationDefaults.preloadEnabled -value True
于 2013-08-29T20:01:18.300 に答える
9

これは少し遅いですが、これは他の人を助けるでしょう...これは私にとってはうまくいき、少し冗長ではありませんでした。主な違いは、ここでデフォルトではなく、アプリケーションを設定しているため、ApplicationDefaultsを削除したことです。

Set-ItemProperty IIS:\Sites\<siteName>\<applicationName> -name preloadEnabled -value True

ここで、「SiteName」はデフォルトのWebサイトと同じである可能性があります「ApplicationName」はMyApplicationと同じである可能性があります

于 2014-07-07T19:05:28.700 に答える
7

実際、これを行う方法があります(/に単一のアプリケーションがあり、それを設定し、サイトの名前を知っていると仮定します)。

[System.Reflection.Assembly]::LoadFrom("C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll")
$serverManager = (New-Object Microsoft.Web.Administration.ServerManager)
$serverManager.Sites["YOUR_SITE_NAME"].Applications["/"].SetAttributeValue("preloadEnabled", $true)
$serverManager.CommitChanges()
于 2013-08-29T07:13:17.207 に答える
3

次のように、Webサイトのルートアプリケーションのプリロードを有効にできます。

$w = New-Item "IIS:\Sites\AAA" -type site –physicalPath "C:\W" -bindings $binding
$w.Collection[0].preloadEnabled = $true
$w | Set-Item
于 2016-01-08T19:16:57.457 に答える
1

よりきめ細かく決定論的なアプローチを提供できます。

# Creating the website:
$website = New-WebSite -Name $WebSiteName -PhysicalPath $WebSiteFolder -ApplicationPool $PoolName

# Setting preload enabled:
Set-WebConfigurationProperty `
    -PSPath "IIS:\" `
    -Filter "/system.applicationHost/sites/site[@name='$WebSiteName']/application[@path='/']" `
    -Name "preloadEnabled" `
    -Value $True  # or $False to turn that off
于 2021-03-09T20:32:34.240 に答える
-1

私もこれを探していましたが、WebAdministrationでこのオプションを設定するものが見つかりませんでした。おそらく、アプローチは正しいWebApplicationでNew-ItemPropertyを呼び出すことです。残念ながら、特定のWebサイトの「デフォルト」アプリケーションを取得することも、このプロパティを設定することもできませんでした。WebAdministrationモジュール(New-WebSiteなどのコマンドレットを有効にする)は、以前のバージョンのIISを念頭に置いて、確かにアプリケーション初期化モジュールの前に作成されたようです。

これは回避策であり、基になるapplicationHost.configファイルを編集してこれらのプロパティを強制的に設定します。これは、現在使用しているスクリプトの少し簡略化されたバージョンです。このスクリプトは管理者として実行する必要があります。

# Copy applicationHost.config to the temp directory,
# Edit the file using xml parsing,
# copy the file back, updating the original

$file = "applicationhost.config"
$source = Join-Path "$env:windir" "\system32\inetsrv\config\$file"
$temp = Join-Path "$env:temp" "$([Guid]::NewGuid().ToString())"
$tempFile = Join-Path "$temp" "$file"

#update all applications in websites whose name matches this search term
$search = "website name to search for"

#copy applicationHost.config to  temp directory for edits
#assignments to $null simply silence output
$null = New-Item -itemType Directory -path $temp
$null = Copy-Item "$source" "$temp"

# Load the config file for edits
[Xml]$xml = Get-Content $tempFile

# find sites matching the $search string, enable preload on all applications therein
$applications = $xml.SelectNodes("//sites/site[contains(@name, `"$search`")]/application") 
$applications | % { 
    $_.SetAttribute("preloadEnabled", "true") 
}

#save the updated xml
$xml.Save("$tempFile.warmed")

#overwrite the source with updated xml
Copy-Item "$tempfile.warmed" "$source"

#cleanup temp directory
Remove-Item -recurse $temp
于 2012-10-23T18:20:23.587 に答える
-1

古い質問ですが、私は自分の洞察を共有したいと思いました。

これは、アプリがサイトルートにあるOctopusのデプロイ後のスクリプトから行う必要がありました。私はここで提案されたすべての解決策を試しましたが、RobertMooreからのものだけが私のために働いていました。

しかし、私はこれを使用することになり、これも仕事をしました:

$Site = Get-Item IIS:\Sites\<site name>
$Site.applicationDefaults.preloadEnabled = $true
$Site | Set-Item -Verbose

警告:サイトにアプリがある場合は、これを行わないでください(@Sergey Nudnovからのコメントを参照)

于 2019-06-07T08:49:35.283 に答える