2017-02-28 24 views
0

這是我迄今爲止查找來自多個服務器的最新.bak文件,並複製了最新日期

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個DIFF數據庫。所以有6個文件,我需要從每個服務器 現在它將最新的文件從它們中抽出。我需要每個服務器和每個bakup的最新文件(每個數據庫有3天的滾動時間)

+0

u能使其更加詳細,如果你能得到的所有文件,並獲得最新的,,,,問題出在哪裏? –

+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

+0

它需要從收集的所有.bak文件中提取最新的唯一文件名 –

+0

如果您需要最新的,那麼沒有唯一點,代碼片段被修改爲現在唯一。 –

+0

試過並得到了這個 select-Unique:術語'select-Unique'不被識別爲cmdlet,函數,腳本文件或可操作程序的名稱。 檢查名稱的拼寫,或者如果包含路徑,請驗證路徑是否正確,然後重試。 在行:5焦炭:5 +選擇唯一 + ~~~~~~~~~~~~~ + CategoryInfo:ObjectNotFound:(選擇唯一:字符串)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException –

相關問題