Powershell命令用于设置IIS日志记录设置

时间:2011-01-07 15:00:30

标签: iis scripting logging iis-7 powershell

我正在创建一个powershell脚本,因此我可以使用IIS Powershell管理控制台通过一个命令创建网站托管。

我有创建IIS站点所需的命令,并为域名等添加绑定......

我缺少的一个难题是如何将默认的日志记录目录从%SystemDrive%\ inetpub \ logs \ LogFiles更改为我自己的文件夹,该文件夹不在服务器的启动驱动器上。

经过广泛搜索后,我希望找到一个沿着以下伪powershell

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

请告诉我如何更改IIS Powershell管理控制台中的日志记录文件夹

提前致谢

6 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:8)

在测试这个帖子的答案时,通过IIS管理器和PowerShell切换选项,我偶然发现了一些隐藏在我身上的东西。在IIS管理器中,选择“配置编辑器”并进行更改,允许IIS管理器生成并显示C#,JavaScript,AppCmd.exe和PowerShell中的更改脚本。只需单击Generate Script选项。

[Auto Generated Scripts for IIS configuration changes]

答案 2 :(得分:6)

要更改单个网站的logFile配置,原始帖子几乎是正确的。而不是New-ItemProperty,使用Set-ItemProperty,就像这样......

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

要更改服务器范围的默认设置,请参阅Andy Schneider's answer

有关可用选项的详细信息,请参阅this IIS.net article

答案 3 :(得分:4)

这也适用于使用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

答案 4 :(得分: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()

答案 5 :(得分:0)

如果您在一台服务器上托管多个站点并希望它们都记录到同一个日志文件,则该过程就完全不同了。我需要花一些时间来寻找线索herehere,所以我想我会为其他有此需求的人留下描述。

以下两个语句会将您所有网站的日志合并到一个文件夹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'