从多个服务器中查找最新的.bak文件并复制最新日期

时间:2017-02-28 21:40:39

标签: powershell-v3.0

这是我到目前为止所拥有的

Get-ChildItem \\testserver01\m$\mssql\backup, \\testserver01\m$\MSSQL\Backup, \\testserver01\m$\MSSQL_TRAINING\Backup -Recurse -filter "*.BAK" | Select Name,Directory,CreationTime,LastWriteTime, @{Name="Mbytes";Expression={ "{0:N0}" -f ($_.Length / 1Mb) }} | 
Sort-Object Directory,Name,CreationTime |
where-object { -not $_.PSIsContainer } | 
sort-object -Property $_.CreationTime | 
select-object -last 1 |
out-gridview

这3个服务器中的每一个运行6个差异数据库的备份..因此每个服务器需要6个文件 现在它从所有这些中提取最新文件。我需要每个服务器和每个bakup的最新文件(每个数据库有3天滚动)

1 个答案:

答案 0 :(得分:0)

指出要注意,Sort-Object将在收集所有数据后进行排序,因此使用排序应该是最小的,并且不使用Out-GridView,因为它在Foreach循环中。

这里是从所有服务器收集数据并从整个列表中取一个。

'\\testserver01\m$\mssql\backup','\\testserver01\m$\MSSQL\Backup','\\testserver01\m$\MSSQL_TRAINING\Backup' | Foreach-Object -Process {
    Get-ChildItem -path $_ -Recurse -filter "*.BAK" | Select Name,Directory,CreationTime,LastWriteTime, @{Name="Mbytes";Expression={ "{0:N0}" -f ($_.Length / 1Mb) }} |
    where-object { -not $_.PSIsContainer } | 
    sort-object -Property $_.CreationTime |
    Select-Object -Unique
}

此致

Kvprasoon