¿Es posible utilizar el comando de PowerShell (e, g, New-WebSite) para crear un sitio web y establecer preloadEnabled = "true" del sitio?IIS7.5 PowerShell preloadEnabled
Respuesta
He estado buscando esto también, pero no pude encontrar nada en WebAdministration para establecer esta opción. Presumiblemente, el enfoque sería llamar a New-ItemProperty en la aplicación web correcta. Lamentablemente, no pude obtener la aplicación "predeterminada" para un sitio web determinado ni establecer esta propiedad en él. Parece que el módulo de Administración web (que habilita cmdlets como New-WebSite) se escribió teniendo en cuenta versiones anteriores de IIS, y ciertamente antes del módulo de inicialización de la aplicación.
Esto es una solución, que obliga a configurar estas propiedades editando el archivo subyacente applicationHost.config. Esta es una versión ligeramente simplificada de un script que estamos usando ahora. Tendrá que ejecutar esta secuencia de comandos como administrador.
# 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
De hecho, hay una manera de hacer esto (suponiendo que tiene una sola aplicación en/que desea establecer para y que conoce el nombre de su sitio):
[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()
Este debería hacer el truco. Puede usar el get-itemproperty
para verificar que funcionó. Me tomó un tiempo averiguar dónde encontrar preloadEnabled
dentro de Powershell pero si canalizas la ruta del sitio a get-member
, puedes seguir trabajando desde allí.
import-module webadministration
set-itemproperty IIS:\Sites\SiteName -name applicationDefaults.preloadEnabled -value True
Funciona a la perfección, importante recordar aquí es: preloadEnabled distingue entre mayúsculas y minúsculas. Además, utilicé ([System.Convert] :: ToBoolean ("True")) en lugar de $ true. – sebastiaan
También necesitaba escribir "applicationDefaults" con la carcasa correcta para que funcione. De lo contrario funciona bien. –
Esta es la respuesta. El truco es agregar "applicationDefaults". antes de "preloadEnabled" –
Esto es un poco tarde, pero esto ayudará a otros ... Esto funcionó para mí y fue un poco menos detallado. La diferencia clave es que me quita ApplicationDefaults porque yo soy la creación de la aplicación, no los valores predeterminados aquí:
Set-ItemProperty IIS:\Sites\<siteName>\<applicationName> -name preloadEnabled -value True
DONDE: poder Sitio Web iguales defecto fuerzas iguales MyApplication
$w = New-Item "IIS:\Sites\AAA" -type site –physicalPath "C:\W" -bindings $binding
$w.**Collection[0].preloadEnabled = $true**
$w | Set-Item
- 1. 500.19 error con IIS7.5
- 2. PHP flush detuvo el lavado en IIS7.5
- 3. Cómo ejecutar PHP en IIS7.5 Express?
- 4. Configuración de IIS7.5 para desarrollo ASP.Net local
- 5. log4net - Los appenders no funcionan en IIS7.5
- 6. Cómo habilitar ASP classic en IIS7.5
- 7. Imposible mostrar errores con PHP bajo IIS7.5
- 8. archivo de imagen sin extensión no visible en IIS7.5
- 9. Cómo redirigir HTTP a HTTPS en la aplicación MVC (IIS7.5)
- 10. Error de Coldfusion y páginas de error de IIS7.5
- 11. HttpCompression elemento en web.config no leído en IIS7.5
- 12. Implementar PowerShell PSProvider * en * PowerShell
- 13. ¿Ejecutar scripts de PowerShell sin instalar PowerShell?
- 14. Powershell llamando al script de Powershell
- 15. Carpeta Ruta del archivo Powershell En Powershell
- 16. Powershell "join"
- 17. PowerShell ParameterBindingException
- 18. Atributos Powershell?
- 19. PowerShell App.Config
- 20. Powershell - Cómo cumplimentar/cerrar un archivo zip en powershell
- 21. ¿Cómo detectar la anidación de Powershell dentro de Powershell?
- 22. No se puede obtener el enlace net.pipe trabajando en IIS7.5 en Windows Server 2008 R2
- 23. En IIS7.5 qué módulo elimina el cuerpo de 400 Bad Request
- 24. ¿Determinar qué proceso w3wp.exe pertenece a qué grupo de aplicaciones en Windows 7/IIS7.5?
- 25. iisnode - IIS7.5: 405 Método no permitido al realizar la solicitud PUT
- 26. Powershell matrices multidimensionales
- 27. Literales booleanos en PowerShell
- 28. PowerShell - InternetExplorer: 0x80010108 (RPC_E_DISCONNECTED)
- 29. ¿Qué significa $ _ en PowerShell?
- 30. Powershell dll cargando
Este es el único enfoque eso funcionó para mí al configurar el atributo preloadEnabled de la aplicación "predeterminada" de un sitio web específico (path = "/"). Set-ItemProperty no parece poder establecer el atributo preloadEnabled para la aplicación raíz. Lo he probado con éxito en dos plataformas: Windows 7 SP1 de 64 bits con IIS 7.5 y el módulo de inicialización de aplicaciones instalado, así como Windows Server 2012 R2 de 64 bits con IIS 8.5. Ambos entornos tienen Windows Management Framework 5.0 RTM (es decir, Powershell 5.0) instalado para sus respectivas plataformas. – Wade