2011-01-07 16 views
9

Estoy creando un script de PowerShell para poder crear el alojamiento de sitios web con un solo comando usando la Consola de administración de IIS Powershell.Comando de Powershell para establecer la configuración de registro de IIS

tengo los comandos que necesito para crear el sitio de IIS y añadir fijaciones para los nombres de dominio, etc ...

La única pieza del rompecabezas que me falta, aunque es cómo cambiar el directorio predeterminado de registro de % SystemDrive% \ inetpub \ logs \ LogFiles a mi propia carpeta que no está en la unidad de arranque del servidor.

Después de una extensa búsqueda que esperaba encontrar un comando en la línea de la siguiente seudo PowerShell

New-ItemProperty IIS:\Sites\MyNewSite -name logging -value @{format='W3C';directory='d:\sites\site\logs';encoding=UTF-8} 

favor podría usted mostrar con un ejemplo de cómo se cambia la carpeta de registro en la Administración de Powershell IIS consola

Gracias de antemano

Respuesta

1
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration") 
$iis = new-object Microsoft.Web.Administration.ServerManager 
$web = $iis.Sites["test"] 
#set new logpath, must be existing 
$web.LogFile.Directory = "F:\Logfiles\" 
$iis.CommitChanges() 
13
Import-Module WebAdministration 
Set-WebConfigurationProperty "/system.applicationHost/sites/siteDefaults" -name logfile.directory -value $logdir 
+0

Gracias. Esto funcionó perfectamente para cambiar la ubicación predeterminada. Tengo carpetas individuales para cada sitio que no tenía claras en mi pregunta. Su código me ayudó a encontrar la respuesta en esta publicación del foro http://forums.iis.net/t/1174319.aspx – Webmonger

+0

Si está utilizando esto con otro IIS: unidad de actividad en su secuencia de comandos. Asegúrese de que la carpeta actual en IIS: unidad es la raíz. Esto se puede lograr con "cd IIS: \". Si se encuentra, por ejemplo, en IIS: \ SslBindings obtendrá un error "Set-WebConfigurationProperty: no hay ninguna configuración definida para el objeto en la ruta IIS: \ SslBindings". –

4

Esto funciona como w ell, utilizando el Módulo WebAdministration

Import-Module WebAdministration 
$site = gi IIS:\Sites\MyNewSite 
$site.Logging.format='W3C' 
$site.Logging.directory='d:\sites\site\logs' 
$site.Logging.encoding=UTF-8 
$site | set-item 
+0

Esto podría haber funcionado en versiones anteriores de IIS o WebAdministration. Sin embargo, ahora la propiedad de un sitio para usar es logFile. por ejemplo, '' '$ site.logFile.logFormat = 'W3C'''' –

5

Para cambiar la configuración del archivo de registro de un sitio web individual, el post original era casi correcta. En lugar de Nueva-ItemProperty, utilizar Set-ItemProperty, al igual que ...

Set-ItemProperty "IIS:\Sites\$SiteName" -name logFile -value @{directory=$LogPath} 

Para cambiar la configuración predeterminada a nivel de servidor, consulte Andy Schneider's answer.

Para obtener más información sobre las opciones disponibles, consulte this IIS.net article.

+0

Pequeño mundo ... Noté el avatar de @ Nathan-hartley en [esta otra discusión en la pestaña de al lado] (http://powershell.org/wp/forums/topic/iis -log-file-maintenance /). DSC suena como el enfoque emergente para todo este tipo de cosas – Nathan

7

Al probar la respuesta de este hilo, alternar las opciones a través de Administrador de IIS y PowerShell, me encontré con algo que se ha ocultado a mí. En el Administrador de IIS, al elegir el Editor de configuración y realizar un cambio, el Administrador de IIS puede generar y visualizar el script para el cambio en C#, JavaScript, AppCmd.exe y PowerShell. Simplemente haga clic en la opción Generar secuencia de comandos.

[Auto Generated Scripts for IIS configuration changes]

+0

Esto es impresionante, aunque requiere IIS 8.xo una mayor para obtener la pestaña Powershell. – dragon788

0

Si aloja varios sitios en un único servidor y les desea todo registro en el mismo archivo de registro, el proceso es bastante diferente. Me llevó un poco de excavación encontrar las pistas here y here, así que pensé en dejar una descripción para cualquier otra persona con esta necesidad.

Las siguientes dos declaraciones combinarán los registros de todos sus sitios web en una carpeta e: \ log \ w3svc.

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter 'system.applicationHost/log' -name CentralLogFileMode -Value 'CentralW3C' 
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter 'system.applicationHost/log' -name centralW3CLogFile.directory -value 'e:\log' 
Cuestiones relacionadas