2016-04-11 10 views
0

Gibt es eine Möglichkeit, Protokollfelder auf einer bestimmten Website in IIS zu aktivieren, vorzugsweise über PowerShell?Aktivieren des IIS-Site-Protokollierungsfelds [PowerShell]

Ich möchte das Protokollierungsfeld "Client IP Address" aktivieren, ohne RDP an das Gerät zu senden und es manuell einzustellen.

Ich bin mit Windows Server 2012 mit IIS 8,5

enter image description here

Antwort

0

Nach einem bisschen mehr Suchen fand ich eine Basis für meine eigene Lösung an: Set IIS Log Fields via PowerShell

Die Activate-LoggingField Funktion übernimmt in einem Website-Namen und Logging-Feld Name als Parameter

Es erhält die gelieferte Website aktive Logging-Felder über die Get-WebConfigurationProperty Cmdlet und überprüft, ob das angegebene Protokollierungsfeld vorhanden ist. Wenn es nicht vorhanden ist, versucht er es über das Set-WebConfigurationProperty Cmdlets hinzufügen

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

Sie auch die Flags gesetzt durch die folgende Methode verwenden, wobei Sie den Gesamtwert der Flags verwenden erforderlich werden, als je die eingestellte Liste unten.

Die Werte werden mit 2 der Potenz der Flag-Nummer gesetzt. Setzen Sie alle Flags, die Sie aktivieren möchten, zusammen und Sie erhalten den Wert, auf den Sie logExtFileFlags setzen können.

<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. Wir möchten, dass UserName, ServerIP, ServerPort und Host aktiviert sind. Dies erfordert, dass wir 8 + 64 hinzufügen + 32768 + 1048576 = 1081416

Der Befehl lautet daher:

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