Команда Powershell для установки параметров ведения журнала IIS

Я создаю сценарий powershell, чтобы создать хостинг веб-сайтов с помощью одной команды с помощью консоли управления IIS Powershell.

У меня есть команды, необходимые для создания сайта IIS и добавления Привязок для доменных имен и т. д...

одна часть головоломки, которую мне не хватает, - это как изменить каталог ведения журнала по умолчанию из %SystemDrive%inetpublogsLogFiles в мою собственную папку, которая не находится на загрузочном диске сервера.

после обширный поиск я ожидал найти команду по строкам следующего псевдо powershell

New-ItemProperty IIS:SitesMyNewSite -name logging -value @{format='W3C';directory='d:sitessitelogs';encoding=UTF-8}

не могли бы вы показать мне пример изменения папки ведения журнала в консоли управления IIS Powershell

спасибо заранее

6 ответов


Import-Module WebAdministration
Set-WebConfigurationProperty "/system.applicationHost/sites/siteDefaults" -name logfile.directory -value $logdir

при тестировании ответа из этого потока, переключая параметры через диспетчер IIS и PowerShell, я наткнулся на то, что было скрыто от меня. В Диспетчере IIS Выбор редактора конфигурации и внесение изменений позволяет диспетчеру IIS генерировать и отображать сценарий для изменения в C#, JavaScript, AppCmd.exe и PowerShell. Просто нажмите опцию Создать сценарий.

[Auto Generated Scripts for IIS configuration changes]


для изменения конфигурации файла журнала отдельного веб-сайта исходная запись была почти правильной. Вместо New-ItemProperty используйте Set-ItemProperty, например...

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

для изменения параметров по умолчанию для всего сервера см. ответ Энди Шнайдера.

дополнительные сведения о доступных параметрах см. В разделе в данной статье iis.net .


Это также работает, используя модуль 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

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

Если вы размещаете несколько сайтов на одном сервере и хотите, чтобы все они регистрировались в одном файле журнала, процесс совершенно другой. Потребовалось некоторое копание, чтобы найти ключи здесь и здесь, поэтому я подумал, что оставлю описание для кого-нибудь еще с этой потребностью.

следующие два оператора объединят журналы для всех ваших веб-сайтов в папку 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'