我的目标是集中关于上次用户备份何时完成的信息。
在我的网络上,我有备份运行到这些位置:
\\server\backup\user1
\\server\backup\user2
\\server\backup\user3
等等。
我的目标是运行一个脚本,检查每个文件夹,并返回附加到用户名称的每个文件夹中最新文件日期的信息。
输出看起来像这样:
user1-2-17-12-1457
user2-1-18-12-1312
user3-2-6-12-0857
其中2-17-12-1457表示\ server \ backup \ user1
上最新文件的日期和时间此脚本将在Windows 2008 SBS计算机上运行,因此我可以使用的任何工具都可用。我运行相对基本的批处理文件,但我愿意接受任何工作。
由于
答案 0 :(得分:2)
像下面这样的东西应该可以解决问题。如果您担心文件创建日期,请将“lastwritetime”的两个实例替换为“creationtime”。还需要调整最终的.tostring()格式,以防我没有准确地收集你想要的时间戳的格式。
$directories = get-childitem "\\server\backup" | where-object { $_.psiscontainer }
foreach ($dir in $directories) {
get-childitem $dir | sort-object lastwritetime | select-object -last 1 | foreach-object { $dir.name + $_.lastwritetime.tostring("-MM-dd-yy-hhmm") }
}
这应输出如下内容:
copy-04-13-11-0213
Fiddler2-10-21-10-0120
My Received Files-11-14-11-0233
net-09-03-10-1023
OneNote Notebooks-02-07-12-0306
SQL Server Management Studio-03-17-11-1056
Visual Studio 2005-03-17-11-1056
Visual Studio 2008-03-17-11-1048
Visual Studio 2010-03-22-11-0650
windowspowershell-11-07-11-0303
编辑: 每条评论..将记录添加到文件(其本身用当前日期加上时间戳),并使用完整路径确保我们不依赖于相对路径。
$directories = get-childitem "\\server\backup" | where-object { $_.psiscontainer }
$outFile = "C:\recentfiles" + (get-date).toString("-MM-dd-yy") + ".txt"
foreach ($dir in $directories) {
get-childitem $dir.Fullname | sort-object lastwritetime | select-object -last 1 | foreach-object { $dir.name + $_.lastwritetime.tostring("-MM-dd-yy-hhmm") } | out-file $outFile -append
}
答案 1 :(得分:0)
这是一个在配置文件中递归搜索所有文件以查找最近编写的文件的示例。然后它将该数据信息解析为一个字符串,该字符串连接到初始文件夹的名称。
$Folders = @(
"\\server\backup\user1",
"\\server\backup\user2",
"\\server\backup\user3"
)
$Folders | % {
$Directory = [System.IO.DirectoryInfo]$_
$AllFiles = Get-ChildItem $_ -Recurse
$NewestDate = ($AllFiles | Sort-Object -property LastWriteTime -Descending)[0].LastWriteTime | Get-Date -Format "-M-d-yy-HHmm"
$NewFileName = "$($Directory.Name)$NewestDate"
$NewFileName
}