สคริปต์ PowerShell ที่จะเรียกโดยเซิร์ฟเวอร์เซิร์ฟเวอร์เพื่อคัดลอกไฟล์บันทึกไปยังสถานที่ห่างไกล


1

เรามีเซิร์ฟเวอร์หลายตัวที่บันทึกไฟล์บันทึกไว้ในเครื่องและฉันพยายามทำการบันทึกอัตโนมัติไปยังตำแหน่งเครือข่ายเดียวโดยใช้ชื่อโฟลเดอร์หลักที่จัดเก็บไฟล์บันทึกและวันที่แก้ไขเวลา

เซิร์ฟเวอร์ 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

คำตอบ:


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.