PowerShell을 사용하여 IIS 로그를 정기적으로 압축 및 삭제
10654 단어 SharePointIISPowerShell
취지
온프레의 SharePoint Server 구축 안건으로 필요하게 되었기 때문에 작성했다.
요구사항:
· 지난 180일 이전의 IIS 로그를 zip으로 압축
· 압축된 파일은 365일간 저장한다. 그것을 초과하면 삭제
Powershell 소스 코드
#-------------------------------------------------
#変数の設定
#-------------------------------------------------
#region
#IISログフォルダのパス
$IISLogFolderPath = "C:\inetpub\logs\LogFiles\W3SVCXXXXXX\"
#IISログの保持期限(単位:日)
#補足:この期限を超えたら圧縮する。圧縮元のIISログは削除する。
$IISLogRetentionPeriod = 180
#圧縮したIISログを保存するフォルダのパス
$folderPathToSaveCompressedIISLog = "C:\inetpub\logs\LogFiles\W3SVCXXXXXX\\アーカイブ保存\"
#圧縮したIISログの保持期限(単位:日)
#補足:この期限を超えたら削除する。
$compressedIISLogRetentionPeriod = 365
#endregion
#-------------------------------------------------
#古いIISログを圧縮する
#-------------------------------------------------
#圧縮したIISログを保存するためのフォルダがなければ作成する
if((Test-Path -Path $folderPathToSaveCompressedIISLog) -eq $false)
{
New-Item $folderPathToSaveCompressedIISLog -ItemType Directory
}
#IISログをすべて取得
$IISLogs = Get-ChildItem -Path $IISLogFolderPath -File
#古いIISログを圧縮
foreach($IISLog in $IISLogs)
{
#ファイル名をもとに作成日を取得する
$matchedIISLogCreatedDateString = [RegEx]::Matches($IISLog.BaseName,"\d{6}$")
$IISLogCreatedDate = [DateTime]::ParseExact($matchedIISLogCreatedDateString.value,"yyMMdd", $null)
#作成日から経過した日数を取得
$timeSpanFromIISLogCreated = (Get-Date) - $IISLogCreatedDate
#作成日から保持期限が経過していなければ処理をスキップする
if($timeSpanFromIISLogCreated.Days -lt $IISLogRetentionPeriod)
{
continue
}
#圧縮ファイルのフルパスを定義
$destinationPath = $folderPathToSaveCompressedIISLog + $IISLogCreatedDate.Date.ToString("yyyyMMdd") + ".zip"
Compress-Archive `
-Path $IISLog.FullName `
-DestinationPath $destinationPath `
-Update
#圧縮前のファイルを削除
Remove-Item -Path $IISLog.FullName
}
#-------------------------------------------------
#古い圧縮ファイルを削除する
#-------------------------------------------------
#圧縮したIISログファイルをすべて取得する
$compressedIISLogs = Get-ChildItem -Path $folderPathToSaveCompressedIISLog -File
#古い圧縮ファイルを削除
foreach($compressedIISLog in $compressedIISLogs)
{
#ファイル名をもとに作成日を取得する
$compressedIISLogCreatedDate = [DateTime]::ParseExact($compressedIISLog.BaseName,"yyyyMMdd", $null)
#作成日から経過した日数を取得
$timeSpanFromCompressedIISLogCreated = (Get-Date) - $compressedIISLogCreatedDate
#作成日から保持期限が経過していなければ処理をスキップする
if($timeSpanFromCompressedIISLogCreated.Days -lt $IISLogRetentionPeriod + $compressedIISLogRetentionPeriod)
{
continue
}
#ファイルを削除
Remove-Item -Path $compressedIISLog.FullName
}
실행 결과 이미지
Reference
이 문제에 관하여(PowerShell을 사용하여 IIS 로그를 정기적으로 압축 및 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wataruf01/items/12b51423a1a2958c2cd0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#-------------------------------------------------
#変数の設定
#-------------------------------------------------
#region
#IISログフォルダのパス
$IISLogFolderPath = "C:\inetpub\logs\LogFiles\W3SVCXXXXXX\"
#IISログの保持期限(単位:日)
#補足:この期限を超えたら圧縮する。圧縮元のIISログは削除する。
$IISLogRetentionPeriod = 180
#圧縮したIISログを保存するフォルダのパス
$folderPathToSaveCompressedIISLog = "C:\inetpub\logs\LogFiles\W3SVCXXXXXX\\アーカイブ保存\"
#圧縮したIISログの保持期限(単位:日)
#補足:この期限を超えたら削除する。
$compressedIISLogRetentionPeriod = 365
#endregion
#-------------------------------------------------
#古いIISログを圧縮する
#-------------------------------------------------
#圧縮したIISログを保存するためのフォルダがなければ作成する
if((Test-Path -Path $folderPathToSaveCompressedIISLog) -eq $false)
{
New-Item $folderPathToSaveCompressedIISLog -ItemType Directory
}
#IISログをすべて取得
$IISLogs = Get-ChildItem -Path $IISLogFolderPath -File
#古いIISログを圧縮
foreach($IISLog in $IISLogs)
{
#ファイル名をもとに作成日を取得する
$matchedIISLogCreatedDateString = [RegEx]::Matches($IISLog.BaseName,"\d{6}$")
$IISLogCreatedDate = [DateTime]::ParseExact($matchedIISLogCreatedDateString.value,"yyMMdd", $null)
#作成日から経過した日数を取得
$timeSpanFromIISLogCreated = (Get-Date) - $IISLogCreatedDate
#作成日から保持期限が経過していなければ処理をスキップする
if($timeSpanFromIISLogCreated.Days -lt $IISLogRetentionPeriod)
{
continue
}
#圧縮ファイルのフルパスを定義
$destinationPath = $folderPathToSaveCompressedIISLog + $IISLogCreatedDate.Date.ToString("yyyyMMdd") + ".zip"
Compress-Archive `
-Path $IISLog.FullName `
-DestinationPath $destinationPath `
-Update
#圧縮前のファイルを削除
Remove-Item -Path $IISLog.FullName
}
#-------------------------------------------------
#古い圧縮ファイルを削除する
#-------------------------------------------------
#圧縮したIISログファイルをすべて取得する
$compressedIISLogs = Get-ChildItem -Path $folderPathToSaveCompressedIISLog -File
#古い圧縮ファイルを削除
foreach($compressedIISLog in $compressedIISLogs)
{
#ファイル名をもとに作成日を取得する
$compressedIISLogCreatedDate = [DateTime]::ParseExact($compressedIISLog.BaseName,"yyyyMMdd", $null)
#作成日から経過した日数を取得
$timeSpanFromCompressedIISLogCreated = (Get-Date) - $compressedIISLogCreatedDate
#作成日から保持期限が経過していなければ処理をスキップする
if($timeSpanFromCompressedIISLogCreated.Days -lt $IISLogRetentionPeriod + $compressedIISLogRetentionPeriod)
{
continue
}
#ファイルを削除
Remove-Item -Path $compressedIISLog.FullName
}
실행 결과 이미지
Reference
이 문제에 관하여(PowerShell을 사용하여 IIS 로그를 정기적으로 압축 및 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wataruf01/items/12b51423a1a2958c2cd0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(PowerShell을 사용하여 IIS 로그를 정기적으로 압축 및 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wataruf01/items/12b51423a1a2958c2cd0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)