ฉันกำลังพยายามเขียนสคริปต์เพื่อใช้ในการย้ายแอปพลิเคชันจากเซิร์ฟเวอร์หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่งและ/หรือจากอักษรระบุไดรฟ์หนึ่งไปยังอักษรระบุไดรฟ์อื่น เป้าหมายของฉันคือการคัดลอกไดเรกทอรีจากที่หนึ่ง ย้ายไปยังอีกที่หนึ่ง จากนั้นเรียกใช้สคริปต์เพื่อแก้ไขอินสแตนซ์ทั้งหมดของชื่อโฮสต์เก่า ที่อยู่ IP และอักษรระบุไดรฟ์เพื่อแสดงชื่อโฮสต์ ที่อยู่ IP และอักษรระบุไดรฟ์ใหม่บน เซิร์ฟเวอร์ใหม่ ดูเหมือนว่าจะทำอย่างนั้น:
ForEach($File in (Get-ChildItem $path\* -Include *.xml,*.config -Recurse)){
(Get-Content $File.FullName -Raw) -replace [RegEx]::Escape($oldhost),$newhost `
-replace [RegEx]::Escape($oldip),$newip `
-replace "$olddriveletter(?=:\Application)",$newDriveLetter |
Set-Content $File.FullName -NoNewLine
}
ปัญหาหนึ่งที่ฉันมีคือไฟล์ทั้งหมดมีการเข้ารหัสประเภทต่างๆ ANSI บางตัว, UTF-8 บางตัว, Unicode บางตัว ฯลฯ เมื่อฉันเรียกใช้สคริปต์ มันจะบันทึกทุกอย่างเป็น ANSI จากนั้นแอปพลิเคชันของฉันก็ไม่ทำงาน ฉันรู้วิธีเพิ่มพารามิเตอร์การเข้ารหัส แต่มีวิธีใดบ้างที่จะรักษาการเข้ารหัสเดียวกันในแต่ละไฟล์ โดยไม่ต้องเขียนสคริปต์ที่ระบุแต่ละไฟล์ในไดเร็กทอรีและการเข้ารหัสที่แต่ละไฟล์มี