在Windows 2008 R2,我有一個共享文件夾結構,這樣秀子文件夾修改日期以特定字符串
D:\USERS
D:\USERS\USER1
D:\USERS\USER1\AUTOBACKUP
D:\USERS\USER1\DROP
D:\USERS\USER1\EXHIBIT
D:\USERS\USER2
D:\USERS\USER2\AUTOBACKUP
D:\USERS\USER2\DROP
D:\USERS\USER2\EXHIBIT
有被100個用戶文件夾,所有用戶在那裏AUTOBACKUP文件夾複製有重要的數據。每個AUTOBACKUP文件夾中都有幾個子文件夾和文件。
我的要求是隻顯示AUTOBACKUP文件夾名稱誰在過去1個月內沒有更新,意味着沒有寫入任何自動備份或其子文件夾中的文件。 (我不要求降/展品文件夾的細節,因爲它可以通過ANY1更新,但自動備份,只能通過相應的用戶進行更新)
結果是這樣的:
D:\USERS\USER1\AUTOBACKUP - Updated
D:\USERS\USER2\AUTOBACKUP - ALERT: Not updated since last month ...
或告訴我只會導致用戶其自動備份尚未從上個月更新。
我試圖通過powershell命令得到結果,但是如果有人更新drop/exhibit,它會向我顯示結果,並且我想在搜索條件中排除它們,搜索只應在自動備份中完成。
已更新: 好吧我正在嘗試下面的腳本,但被長路徑錯誤擊中。文件夾很深,意味着自動備份文件夾裏面有幾個子文件夾,並且文件名太長,因此會出錯。現在HOWTO解決這個問題:(
$users = Get-Content C:\myusers.txt
$lastMonth = (Get-Date).AddMonths(-1)
$backupfiles = Get-ChildItem $path -Recurse
$logLocation = "D:\mylog.log"
foreach ($user in $users){
$path = "D:\Users\$user\AUTOBACKUP"
$backupfiles = Get-ChildItem $path -Recurse
foreach ($file in $backupfiles){
$modifiedDate = $file.LastWriteTime
if ($modifiedDate -ge $lastMonth){
$nobackup = $false
break
} else {
$nobackup = $true
}
}
if ($nobackup){
Add-Content -Path $logLocation -Value "$filepath - NOBACKUP"
}
}
@ Get errorItem using 'Get-ChildItem -Path \\?\ d:'OR'Get-ChildItem -Path \\?\ d:\ temp'或者'Get-ChildItem -Path \\?\ d: 'OR「\\?\ $ path」 –
嗯,get-childitem不支持它。使用IO類:'$ backupfiles =([IO.DirectoryInfo]「\\?\ $ path」)。GetFiles('*',[IO.SearchOption] :: AllDirectories' – wOxxOm
@wOxxOm 好的我接受,我的技能太有限了。 IO_CLASS與完整的命令行語法,它在我的頭:),在此期間,我將繼續嘗試傳統的方法.... –