我是否可以使用PowerShell命令(例如,New-WebSite)创建网站并设置网站的preloadEnabled =“true”?
答案 0 :(得分:26)
这应该可以解决问题。您可以使用get-itemproperty
来验证它是否有效。我花了一段时间才弄清楚在powershell中找到preloadEnabled
的位置,但是如果你将网站路径移到get-member
,那么你可以从那里开始工作。
import-module webadministration
set-itemproperty IIS:\Sites\SiteName -name applicationDefaults.preloadEnabled -value True
答案 1 :(得分:6)
事实上有一种方法可以做到这一点(假设你有一个应用程序在/你想要设置它,你知道你的网站的名称):
[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()
答案 2 :(得分:5)
这有点晚了,但这对其他人有帮助......这对我有用,而且不那么冗长。关键的区别在于我删除了ApplicationDefaults,因为我正在设置应用程序,而不是默认设置:
Set-ItemProperty IIS:\Sites\<siteName>\<applicationName> -name preloadEnabled -value True
其中: &#39; SITENAME&#39;可能等于默认网站 &#39;应用程序名&#39;可能等于MyApplication
答案 3 :(得分:2)
PHONE_NUMBER CHAR (8) NOT NULL,
答案 4 :(得分: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
答案 5 :(得分:0)
老问题,但我想分享我的见解。
我需要从Octopus部署后脚本中执行此操作,该脚本的应用程序位于站点根目录中。我在这里尝试了所有建议的解决方案,而罗伯特·摩尔(Robert Moore)的解决方案是唯一为我工作的解决方案。
但是,我最终使用了它,它也完成了工作:
$Site = Get-Item IIS:\Sites\<site name>
$Site.applicationDefaults.preloadEnabled = $true
$Site | Set-Item -Verbose
答案 6 :(得分:-1)
我一直在寻找这个,但在WebAdministration中找不到任何设置此选项的内容。据推测,方法是在正确的WebApplication上调用New-ItemProperty。不幸的是,我无法获得给定网站的“默认”应用程序,或者在其上设置此属性。有点像WebAdministration模块(它支持像New-WebSite这样的cmdlet)是用早期版本的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