Команда 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. Просто нажмите опцию Создать сценарий.
[]
для изменения конфигурации файла журнала отдельного веб-сайта исходная запись была почти правильной. Вместо 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'