2016-04-11 81 views
0

有沒有辦法激活IIS中特定網站上的日誌記錄字段,最好是通過PowerShell?激活IIS站點日誌記錄字段[PowerShell]

我想激活'客戶端IP地址'日誌字段,而不需要RDP到機器並手動設置。

我運行Windows Server 2012和IIS 8.5

enter image description here

回答

0

多一點搜索後,我發現了一個基線爲我自己的解決方案爲: Set IIS Log Fields via PowerShell

的激活,LoggingField函數取以網站名稱和日誌字段名稱作爲參數

它通過Get-WebConfigurationProperty獲取提供的網站的活動日誌記錄字段cmdlet並檢查提供的日誌記錄字段是否存在。如果它不存在,它會嘗試通過Set-WebConfigurationProperty cmdlet的

Import-Module Webadministration 

Function Activate-LoggingField 
{ 
    param([Parameter(Mandatory=$true)][string]$websiteName, 
      [Parameter(Mandatory=$true)][string]$loggingField) 

    $loggingFilter = "/system.applicationHost/sites/site[@name=`"$websiteName`"]/LogFile" 
    $currentLoggingFields = Get-WebConfigurationProperty -Filter $loggingFilter -Name LogExtFileFlags 
    if ($currentLoggingFields -notmatch $loggingField) 
    { 
     $newLoggingFields = "$currentLoggingFields,$loggingField" 
     Set-WebConfigurationProperty -Filter $loggingFilter -Name LogExtFileFlags -Value $newLoggingFields 
    } 
} 

Activate-LoggingField -websiteName "MySite" -loggingField "ClientIP" 
1

您可以通過以下方法,讓你使用需要通過設定爲每標誌的總價值還設置了標誌,將其添加列表如下。

這些值由2設置爲標誌數字的冪。總計你想要打開的所有標誌,並獲得可以設置logExtFileFlags的值。

<flag number= "0" flag name="Date" value="1" /> 
<flag number= "1" flag name="Time" value="2" /> 
<flag number= "2" flag name="ClientIP" value="4" /> 
<flag number= "3" flag name="UserName" value="8" /> 
<flag number= "4" flag name="SiteName" value="16" /> 
<flag number= "5" flag name="ComputerName" value="32" /> 
<flag number= "6" flag name="ServerIP" value="64" /> 
<flag number= "7" flag name="Method" value="128" /> 
<flag number= "8" flag name="UriStem" value="256" /> 
<flag number= "9" flag name="UriQuery" value="512" /> 
<flag number= "10" flag name="HttpStatus" value="1024" /> 
<flag number= "11" flag name="Win32Status" value="2048" /> 
<flag number= "12" flag name="BytesSent" value="4096" /> 
<flag number= "13" flag name="BytesRecv" value="8192" /> 
<flag number= "14" flag name="TimeTaken" value="16384" /> 
<flag number= "15" flag name="ServerPort" value="32768" /> 
<flag number= "16" flag name="UserAgent" value="65536" /> 
<flag number= "17" flag name="Cookie" value="131072" /> 
<flag number= "18" flag name="Referer" value="262144" /> 
<flag number= "19" flag name="ProtocolVersion" value="524288" /> 
<flag number= "20" flag name="Host" value="1048576" /> 
<flag number= "21" flag name="HttpSubStatus" value="2097152" /> 

E.G. 我們希望打開UserName,ServerIP,ServerPort和Host。 這就要求我們添加8 + 64 + 32768 + 1048576 = 1081416

因此的命令是:

Set-ItemProperty "IIS:\Sites\$siteName" -name LogFile.logExtFileFlags -value 1081416