我已經寫了一個PowerShell腳本來存檔舊的日誌文件或者說一些輸出文件的Web應用程序在TB中,但腳本需要很長時間。我做了一些改進,但無法從這裏加速。PowerShell |需要一些性能改進
代碼:
#region Archive Files using 7zip
[cmdletbinding()]
Param
(
[Parameter(Mandatory=$true, HelpMessage = "Path needs to be with trailing slash at the end of location.")]
[string]$SourceFilesPath
)
$7zip = "C:\Program Files\7-Zip\7z.exe"
$FilePath = ""
foreach ($filename in $(Get-ChildItem $SourceFilesPath -Force -Recurse | where {$_.LastWriteTime -lt (get-date).AddDays(-1).ToShortDateString()}))
{
$FilePath = Get-ItemProperty $filename.FullName
$ZipFilePath = $filename.Directory.ToString() + "\ZippedFiles" + "\Archive_" + $filename.LastWriteTime.ToString("MMddyyyy") + ".7z"
$tempPath = ("-w"+"C:\Temp")
$OutputData = &$7zip a $tempPath -t7z $ZipFilePath $FilePath
$OutputData
if ($OutputData -contains "Everything is OK")
{
Remove-Item $FilePath -Force
Write-Output "File removed $FilePath"
}
Get-Item $ZipFilePath | ForEach-Object {$_.LastWriteTime = $filename.LastWriteTime}
}
#endregion
7zip的僅使用2在默認模式LZMA芯。切換到使用LZMA2壓縮來啓用所有CPU核心,或通過命令行開關指定更快的壓縮模式。 – wOxxOm
我可以做到這一點,但不認爲它會給文件大小不大的改進。文件大多數是kb,最大文件大小是5MB,但文件數量很大。所以可能需要使用過濾器或其他任何可能更快的過濾方式。 – Imran
大量文件*小尺寸=大整體大小=長壓縮時間。 – wOxxOm