เรามีเซิร์ฟเวอร์หลายตัวที่บันทึกไฟล์บันทึกไว้ในเครื่องและฉันพยายามทำการบันทึกอัตโนมัติไปยังตำแหน่งเครือข่ายเดียวโดยใช้ชื่อโฟลเดอร์หลักที่จัดเก็บไฟล์บันทึกและวันที่แก้ไขเวลา
เซิร์ฟเวอร์ 1 D:\Projects\Ohio\(Rel1)\BuildScripts\logs
เซิร์ฟเวอร์ 2 D:\Projects\Ohio\(Rel2)\BuildScripts\logs
เซิร์ฟเวอร์ 3 D:\Projects\Ohio\(Rel3)\BuildScripts\logs
กำลังพยายามคัดลอกบันทึกทั้งหมดไปที่ R:\Logs\CruiseControl\(Rel.AW) \logs+timestamp\logfiles.txt
จนถึงตอนนี้ฉันสามารถตั้งค่านี้สำหรับเซิร์ฟเวอร์ 1 ด้วยสคริปต์ด้านล่าง แต่ปัญหาคือต้องเรียกสคริปต์เดียวกันโดยเซิร์ฟเวอร์ 1, เซิร์ฟเวอร์ 2 และเซิร์ฟเวอร์ 3 และแต่ละครั้งที่บันทึกต้องไปที่กระแสที่เฉพาะเจาะจง (Rel1 , Rel2, Rel3) ฉันจะอ้างอิงชื่อสตรีมได้อย่างไร?
$logDir = 'D:\Projects\Ohio\Rel.AW\BuildScripts\logs'
$copyDir = 'R:\Logs\CruiseControl\Rel.AW'
Get-ChildItem $logDir -File | ForEach {
$parentFolder = $_.Directory.Name
$timeStamp = $_.LastWriteTime.ToString('MMddyyyy')
$path = Join-Path -Path $copyDir -ChildPath "$($parentFolder)_$($timeStamp)"
Write-Host "Path to copy to is: $path" -ForegroundColor Green
}
robocopy $logDir $path /log+:R:\Logs\CruiseControl\Rel.AW\log