Это то, что мне пришлось сделать, чтобы настроить ведение журнала IIS. Я скопировал это из большего набора скриптов, поэтому форматирование / синтаксис может быть не на 100%, но это работает и является своего рода идемпотентным в том смысле, что его можно запускать миллион раз, ничего не ломая, но это ужасно отстой.
IIS (<.net core) ужасен, но я должен его поддерживать. Я смотрю на эти сценарии и хочу знать, возможно ли сделать все это с помощью DSC таким образом, чтобы его было легче читать и определять.
#PS equivalent of appcmd doesnt work
#Remove-WebConfigurationLock -Filter '/system.webServer/httplogging';
#Remove-WebConfigurationLock -filter '/system.applicationHost/log';
C:/Windows/system32/inetsrv/appcmd unlock config /section:httpLogging
Set-WebConfigurationProperty -PSPath "MACHINE/WEBROOT/APPHOST/my_app" `
-Filter "/system.webServer/httplogging" -Name dontlog -Value $false
# appcmd equivalent: .\appcmd unlock config /section:httpLogging
Set-WebConfigurationProperty -Force -PSPath 'MACHINE/WEBROOT/APPHOST' `
-Filter "system.applicationHost/sites/site[@name='my_app']" `
-name "logfile" -value @{ `
logFormat="W3C"; `
directory = "C:/inetpub/my_app/logs/IIS"; `
logTargetW3C="File"; `
period="MaxSize"; `
truncateSize="60000000"; `
localTimeRollover="true"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' `
-filter "system.applicationHost/sites/site[@name="my_app"] `
/logFile" -name "LogExtFileFlags" -value "Date,Time,ClientIP,UserName,SiteName,ComputerName,ServerIP,Method,UriStem,UriQuery,HttpStatus,Win32Status,BytesSent,BytesRecv,TimeTaken,ServerPort,UserAgent,Cookie,Referer,ProtocolVersion,Host,HttpSubStatus"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' `
-filter "system.applicationHost/sites/site[@name='my_app'] `
/logFile/customFields" -name "." -value @{logFieldName='X-FORWARDED-For';sourceName='X-FORWARDED-For';sourceType='RequestHeader'},@{logFieldName='X-FORWARDED-Proto';sourceName='X-FORWARDED-Proto';sourceType='RequestHeader'},@{logFieldName='Authorization';sourceName='Authorization';sourceType='RequestHeader'}