2013-05-29 26 views
-1

我解析通過一個目錄與多個子目錄,並希望比較LastAccessed時間與獲取日期時間,以查看該文件是否自昨天以來被訪問,並基於我將要麼刪除文件,要麼保持獨立。我已經嘗試將獲取日期結果輸出到文本文件並將其拉回爲字符串,我嘗試了通配符,我甚至使用-like而不是-eq以便比較工作,但它沒有正確比較數據。任何幫助將不勝感激。LastAccessTime和得到日期比較

這裏是我當前的代碼:

$servers="servera","serverb" 
$date3=get-date -Format d 
foreach($a in $servers){ 
    $CTXGPDir="\C$\ProgramData\Citrix\GroupPolicy" 
    $CTXGPDirFP="\\"+"$a"+"$CTXGPDir" 
    $CTXGPUserDirstoRM=Get-ChildItem "$CTXGPDirFP"|where-Object{$_.Name -notlike "*.gpf"} 
    foreach($i in $CTXGPUserDirstoRM){ 
     $datestring="$date3"+" *" 
     $CTXUserGPPath="\C$\ProgramData\Citrix\GroupPolicy\$i" 
     $CTXUserGPFP="\\"+"$a"+"$CTXUserGPPath" 
     $file=get-item $CTXUserGPFP 
     $isFileInactive=$file|select-object -expandproperty LastAccessTime 
     write-host $file 
     write-host $isFileInactive 
     write-host $datestring 
     if($isFileInactive -like "$datestring *"){write-host "$CTXUserGPFP on $a has lastwritetime of $isFileInactive and should NOT BE deleted"} 
     if($isFileInactive -notlike "$datestring *"){write-host "$CTXUserGPFP on $a has lastwritetime of $isFileInactive and SHOULD BE deleted"} 
     } 

回答

1

您的日期比較是很大的缺陷。

get-date -format d根據您的區域設置返回String,表示當前日期。

get-childitem <file> | select -expandproperty lastaccesstime返回DateTime對象,使用您的區域設置將其格式化爲「長」日期/時間。

要有效比較這兩個日期,您需要將後者轉換爲相同的格式。

$isFileInactive=($file|select-object -expandproperty LastAccessTime).ToShortDateString()

$isFileInactive現在是一個String格式化一樣的,你得到與get-date -format d,你可以做一個適當的比較。

if($isFileInactive -eq $datestring){write-host "$CTXUserGPFP on $a has lastwritetime of $isFileInactive and should NOT BE deleted"}

如果你要處理的時區,你可能要修改它ToShortDateString()之前添加.ToLocalTime();