2012-05-23 12 views

cevap

-1

Ben de bunu arıyordum, ancak bu seçeneği ayarlamak için WebAdministration'da hiçbir şey bulamadı. Muhtemelen yaklaşım doğru WebUygulama üzerine Yeni ItemProperty çağırmak olacaktır. Maalesef, belirli bir web sitesi için "varsayılan" uygulamayı veya bu özelliği üzerine yükleyemedim. WebAdministration modülü (New-WebSite gibi cmdlet'leri mümkün kılan), IIS'nin önceki sürümlerinde ve kesinlikle Uygulama Başlatma modülünden önce yazılmış gibi görünüyor.

Bu, temelde yatan applicationHost.config dosyasını düzenleyerek bu özelliklerin ayarını zorlayan geçici bir çözümdür. Bu, şu anda kullandığımız bir komut dosyasının biraz basitleştirilmiş bir sürümüdür. Bu komut dosyasını yönetici olarak çalıştırmanız gerekir.

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

bunu yapmanın bir yolu aslında yoktur (sizin için ayarlamak istediğiniz/tek bir uygulama var varsayarak ve sitenizin adını biliyor):

[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() 
+1

:

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

: önemli fark ben değil varsayılan burada, uygulamayı kuruyorum çünkü ApplicationDefaults kaldırıldı olmasıdır Belirli bir web sitesinin "varsayılan" uygulamasının preloadEnabled özniteliğini ayarlarken benim için çalıştı (yol = "/"). Set-ItemProperty, kök uygulama için preloadEnabled özniteliğini ayarlayamıyor gibi görünüyor. Bunu iki platformda başarıyla test ettim: Windows 7 SP1 64-bit w/IIS 7.5 ve Uygulama Başlatma modülü yanı sıra Windows Server 2012 R2 64-bit w/IIS 8.5 yüklü. Her iki ortam da kendi platformları için Windows Management Framework 5.0 RTM'ye (yani Powershell 5.0) sahiptir. – Wade

23

Bu hile yapmalı. Çalıştığını doğrulamak için get-itemproperty'u kullanabilirsiniz. Powershell içinde preloadEnabled'u nerede bulacağımı bulmam biraz zaman aldı ama site yolunu get-member'a gönderirseniz, oradan oradan çalışabilirsiniz.

import-module webadministration 
set-itemproperty IIS:\Sites\SiteName -name applicationDefaults.preloadEnabled -value True 
+0

Mükemmel çalışır, burada hatırlamak önemlidir: preloadEnabled büyük/küçük harf duyarlıdır. Ayrıca, $ true yerine ([System.Convert] :: ToBoolean ("True")) kullandım. – sebastiaan

+0

Ayrıca "applicationDefaults" yazarak çalışması için doğru durumda yazmam gerekiyordu. Aksi halde iyi çalışıyor. –

+0

Bu cevaptır. Hile "applicationDefaults" ekliyor. "preloadEnabled" –

5

Biraz geç oldu, ancak bu başkalarına yardımcı olacak ... Bu benim için çalıştı ve biraz daha az ayrıntılıydı. Bu yalnızca bir yaklaşımdır kudreti eşit Varsayılan Web sitesi kudreti eşit MyApplication

1
$w = New-Item "IIS:\Sites\AAA" -type site –physicalPath "C:\W" -bindings $binding 
$w.**Collection[0].preloadEnabled = $true** 
$w | Set-Item