2013-07-17 112 views
0

我正在創建一個PowerShell腳本,它將查看文件的最後一次寫入或任何文件的內容並輸出文件夾和時間戳。用於在終端服務器環境中使用隆起的配置文件來標識配置文件,但文件夾的最後寫入時間是針對文件夾本身的,而每次用戶登錄內部的東西時都會被觸摸並添加時間戳。Powershell根據內容輸出文件夾lastwritetime

我已經嘗試以下

Get-ChildItem -Recurse | where-object {$_.lastwritetime -gt (get-date).addDays(-1)} | Foreach-Object { $_.Directory } | sort-object name -descending | export-csv c:\lists.csv 

我試過幾次迭代這似乎工作

get-childitem -recurse | where-object {$_.name -eq "Pending"} | 
where-object {$_.lastwritetime -gt (get-date).addDays(-1)} | 
where-object {$_.PSIsContainer} | 
foreach {$_.Parent} | foreach {$_.name} 

唯一的問題是現在的輸出把lastwritetime從「待定「文件夾顯示

+0

你試圖讓文件或文件夾?請詳細說明。 – Neolisk

+0

我只想要文件夾名稱,基本上可以確定哪些用戶在任何天數內都觸摸了他們的個人資料。 但說它的user1,user2,user3文件夾lastwritetime沒有更新,因爲它沒有被修改,但裏面的內容說一個user.dat文件有一個時間戳,我可以用它來說它的lastwritetime是在一天之內,所以我想檢查每個文件夾 /user.dat的lastwritetime,並從中顯示 name和user.dat lastwritetime – deuceklub

+0

get-childitem -recurse | where-object {$ _。name -eq'Pending'} | where-object {$ _。lastwritetime -gt(get-date).addDays(-1)} | where-object {-not $ _。PSIsContainer} | Foreach-Object {$ _。Parent} – deuceklub

回答

0
$path = get-childitem | foreach {$_.name} 
$directory = $path | foreach {$_+"/"} 
get-childitem -path $directory | where-object {$_.name -eq "Pending"} | 
where-object {$_.lastwritetime -gt "12/30/2012"} | 
where-object {$_.PSIsContainer} | 
foreach {$_.parent.name + "," + $_.lastwritetime} > 
c:\users\opr9823\2013users.csv 

這爲我做

1

我不完全確定,如果我的問題得到了解決,但我的小腳本顯示了所有項目,在最後一天以及在變化+目錄:

$directories = (Get-ChildItem -Path C:\test -Directory).FullName 
    $directories | foreach {if (($_.lastwritetime -gt (get-date).adddays(-1)) -or ((get-childitem -path $_ -Recurse).lastwritetime -gt (get-date).adddays(-1))) { 
     $itemname = (Get-ChildItem -Path $_ -Recurse | where {$_.LastWriteTime -gt (get-date).AddDays(-1)}).BaseName 
     $itemtime = (Get-ChildItem -Path $_ -Recurse | where {$_.LastWriteTime -gt (get-date).AddDays(-1)}).LastWriteTime 
     $_ >> C:\timestamp.txt; $itemname >> C:\timestamp.txt; $itemtime >> C:\timestamp.txt; 
                                            } 
          } 

我從我的小腳本這回:

C:\test\DIR - Copy (2) 
test (2) 
test 
test2 (2) 
test2 

Wednesday, 17. July 2013 17:49:43 
Wednesday, 17. July 2013 17:49:43 
Wednesday, 17. July 2013 17:49:43 
Wednesday, 17. July 2013 17:49:43 

我不知道你有多少文件來檢查,所以我不能,如果這個會說快點。

編輯:

顯示我:

Directory: C:\test 


Mode    LastWriteTime  Length Name                                  
----    -------------  ------ ----                                  
d----  18.07.2013  09:37   Neuer Ordner - Kopie (2)  
+0

我只想檢查文件夾中的特定文件或文件夾的GT時間戳,並返回文件夾名稱,如果它符合要求 – deuceklub

+0

更新我的答案。簡單的事務來選擇最近的文件。那是你想要的嗎? – XXInvidiaXX