2010年11月11日木曜日

◆更新されたファイルを探す

良く知らないソフトの動作を探ったり、他の会社が作ったシステムを運用していたりすると、設定がどこにあるのか?とか、どこかにログを吐いてないか?とか探ることがよくある。

そんなときに、今日更新されたファイルとか、3分以内に更新されたファイルとかを見つけられると便利だ。
という事で以下のような関数を作って使っている。

param(
    [string]$Path = "C:\",
    $Day,
    $Minute,
    [switch]${??}
)

$comment = @'
#####################################################

指定されたパス配下で新規作成、更新があったファイルを取得する
  (MGet-RecentFile.ps1)

param(
    $Path = "C:\",
    $Day,
    $Minute,
    [switch]${??}
)

例:
    #今日更新があったファイル
    MGet-RecenFile.ps1 -Path "C:\Windows" -Day 0
    #昨日更新があったファイル
    MGet-RecenFile.ps1 -Path "C:\Windows" -Day 1
    #10分以内に更新があったファイル
    MGet-RecenFile.ps1 -Path "C:\Windows" -Min 10

#####################################################
'@

Set-PSDebug -Strict

if(${??}) {$comment;return}
if($Day -eq $null -and $Minute -eq $null) {Write-Warning "Please specify a TimeSpan(Day or Minute)." ; return}

$targetDate = Get-Date
if($Day -ne $null){
    $targetDate = $targetDate.AddDays(-1 * $Day)
    $targetDate = $targetDate.Date
}
else{
    $targetDate = $targetDate.AddMinutes(-1 * $Minute)
}

Get-ChildItem -Path $Path -Recurse -ea SilentlyContinue -Force |
        ?{$_.LastWriteTime -ge $targetDate} | select fullname

0 件のコメント:

コメントを投稿