ค้นหาเว็บไซต์

PowerShell - เปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ [5 วิธี]


ใช้ Out-File Cmdlet

ใช้ cmdlet Out-File เพื่อเปลี่ยนเส้นทางเอาต์พุต PowerShell ไปยังไฟล์

ใช้ Out-File Cmdlet:

Get-Process -Name chrome | Out-File -FilePath E:\Test\OuputFile.txt

Get-Process ใช้เพื่อดึงกระบวนการทั้งหมดที่กำลังทำงานอยู่บนเครื่องของเรา (คอมพิวเตอร์ในระบบ) เราสามารถกรองข้อมูลนี้ได้โดยการระบุพารามิเตอร์ ตัวอย่างเช่น เราใช้พารามิเตอร์ -Name เพื่อรับกระบวนการ chrome ทั้งหมดที่ทำงานอยู่ในปัจจุบัน หากไม่มีพารามิเตอร์ cmdlet นี้จะได้รับกระบวนการทั้งหมดที่ทำงานอยู่บนเครื่องคอมพิวเตอร์ในปัจจุบัน

Out-File cmdlet ใช้เพื่อส่งข้อมูลที่ได้รับจากกระบวนการก่อนหน้าไปยังไฟล์ที่กำหนด cmdlet นี้ใช้ระบบการจัดรูปแบบของ PowerShell โดยปริยายเพื่อเขียนไปยังไฟล์ที่กำหนดและรับการแสดงการแสดงผลที่แน่นอนเป็นคอนโซล PowerShell

Out-File เขียนข้อมูลที่ได้รับไปที่ OutputFile.txt ซึ่งเราระบุโดยใช้ชื่อพารามิเตอร์ -FilePath โปรดจำไว้ว่าคำสั่งข้างต้นจะสร้างไฟล์ .txt หากไม่มีอยู่ และจะเขียนทับไฟล์หากมีอยู่ ดังนั้น ให้ใช้พารามิเตอร์ -Append หากคุณไม่ต้องการสูญเสียเนื้อหาที่มีอยู่ หรือใช้ -NoClobber เพื่อหลีกเลี่ยงการเขียนทับไฟล์

แนะนำให้ใช้ cmdlet Out-File นี้ หากเราจำเป็นต้องใช้พารามิเตอร์เพื่อกรองข้อมูล มิฉะนั้นตัวเลือกการเปลี่ยนเส้นทาง (เราจะเรียนรู้ในอีกสักครู่) จะดีกว่า ตัวอย่างเช่น เราสามารถใช้พารามิเตอร์ต่อไปนี้กับ Out-File

-FilePath

ใช้เพื่อระบุตำแหน่งและชื่อไฟล์

-Append

มันถูกใช้เพื่อผนวกผลลัพธ์ไปยังไฟล์ที่มีอยู่

-Force

เราสามารถเขียนทับไฟล์แบบอ่านอย่างเดียวได้โดยใช้พารามิเตอร์นี้

-Width

จำกัดจำนวนอักขระในทุกบรรทัด (ขีดจำกัดเริ่มต้นคือ 80 อักขระ)

-WhatIf

มันถูกใช้เพื่อรันในโหมดทดสอบ

-NoClobber

มันไม่อนุญาตให้เราเขียนทับไฟล์

-NoNewLine

ไม่อนุญาตให้เขียนอักขระขึ้นบรรทัดใหม่

การใช้ตัวดำเนินการเปลี่ยนเส้นทาง

ใช้ตัวดำเนินการเปลี่ยนเส้นทาง > และ >> เพื่อเปลี่ยนเส้นทางเอาต์พุต PowerShell ไปยังไฟล์

ใช้ > ตัวดำเนินการเปลี่ยนเส้นทาง:

Get-Process -Name chrome >  E:\Test\OuputFile.txt

ในส่วนก่อนหน้านี้ เราได้เรียนรู้เกี่ยวกับพารามิเตอร์ Get-Process cmdlet และ -Name แล้ว ที่นี่ เราใช้ตัวดำเนินการเปลี่ยนเส้นทาง > เพื่อเขียนเอาต์พุต PowerShell ไปยังไฟล์ มันจะสร้าง OutputFile.txt หากไม่มีอยู่ในไดเร็กทอรีที่กำหนด และเขียนทับหากมี

เมื่อใช้ตัวดำเนินการ > เราจะสามารถเขียนไปยังไฟล์ที่ระบุได้หากทุกอย่างทำงานได้ดี เนื่องจากมันถูกใช้กับสตรีม Success Only อย่างไรก็ตาม มีตัวดำเนินการเปลี่ยนเส้นทางหลายรูปแบบในการเขียนสตรีมที่แตกต่างกัน ลองดูคำอธิบายและ cmdlet ที่เทียบเท่ากัน

Redirection Operator Description Equivalent Cmdlet
> It is used to write a Success only stream. Write-Output
2> It is used to write an Error only stream. Write-Error
3> We can use it to write a Warning only stream. Write-Warning
4> It is used to write Verbose only steam. Write-Verbose
5> It is used to write Debug only steam. Write-Debug
6> It is used to write Information only steam. Write-Information
*> All

ไม่ต้องกังวลหากคุณกำลังมองหาตัวดำเนินการเปลี่ยนเส้นทางเพื่อต่อท้ายไฟล์ เรามีคุณครอบคลุม เราสามารถใช้ตัวดำเนินการเปลี่ยนเส้นทางอื่น (>>) เพื่อผนวกเอาต์พุตในไฟล์ที่ระบุ

ใช้ >> ตัวดำเนินการเปลี่ยนเส้นทาง:

Get-Process  >>  E:\Test\OuputFile.txt

ใช้ StreamWriter .Net Class

หากต้องการเปลี่ยนเส้นทางเอาต์พุต PowerShell ไปยังไฟล์:

  • สร้างอินสแตนซ์คลาส System.IO.StreamWriter โดยใช้ cmdlet New-Object
  • ใช้ cmdlet Get-Process เพื่อรับข้อมูลเกี่ยวกับกระบวนการที่กำลังทำงานอยู่ทั้งหมด
  • ส่งข้อมูลที่ดึงมาจากขั้นตอนก่อนหน้าไปยัง ForEach-Object cmdlet โดยใช้ไปป์ไลน์ (|)
  • ตอนนี้ ForEach-Object วนซ้ำทุกอ็อบเจ็กต์กระบวนการและเขียนไปยังไฟล์ที่ระบุ
  • สุดท้าย ใช้เมธอด .Close() เพื่อปิดอ็อบเจ็กต์ StreamWriter

ใช้คลาส StreamWriter:

$streamWriter = New-Object System.IO.StreamWriter("E:\Test\Output.txt")
Get-Process | ForEach-Object {$streamWriter.WriteLine($_)}
$streamWriter.Close()

ในตัวอย่างนี้ New-Object cmdlet ถูกใช้เพื่อสร้างอินสแตนซ์ใหม่ของคลาส System.IO.StreamWriter ซึ่งใช้ในการเขียนข้อความ (ข้อมูลประเภทสตริง) ลงในสตรีม ถัดไป ออบเจ็กต์ StreamWriter จะเริ่มต้นได้ด้วยเส้นทางไปยังไฟล์เอาต์พุตเป็นอาร์กิวเมนต์

Get-Process cmdlet ใช้เพื่อดึงข้อมูลรายการกระบวนการ ซึ่งถูกส่งไปยัง cmdlet ForEach-Object ForEach-Object cmdlet วนซ้ำแต่ละวัตถุกระบวนการและเขียนลงในไฟล์เอาต์พุตโดยใช้วิธี WriteLine ของวัตถุ StreamWriter

สุดท้ายนี้ มีการเรียกเมธอด ปิด ของออบเจ็กต์ StreamWriter เพื่อปิดสตรีมและปล่อยทรัพยากรที่เกี่ยวข้อง รหัสนี้จะสร้างไฟล์ชื่อ Output.txt ในไดเร็กทอรี E:\Test และเขียนเอาต์พุตของคำสั่ง Get-Process ไปที่ ไฟล์.

หมายเหตุ: คลาส StreamWriter เป็นส่วนหนึ่งของ .NET Framework และสามารถใช้ใน PowerShell เพื่อเขียนข้อความลงในไฟล์หรือสตรีมอื่นๆ โดยมีคุณสมบัติขั้นสูงมากกว่าตัวดำเนินการเปลี่ยนเส้นทางในตัว เช่น ความสามารถในการระบุการเข้ารหัสของเอาต์พุต ต่อท้ายไฟล์ที่มีอยู่ ควบคุมขนาดบัฟเฟอร์ และล้างบัฟเฟอร์ไปยังสตรีม

ใช้ Add-Content Cmdlet

ใช้ Add-Content cmdlet เพื่อเปลี่ยนเส้นทางเอาต์พุต PowerShell ไปยังไฟล์

ใช้ Cmdlet เพิ่มเนื้อหา:

Get-Process -Name chrome | Add-Content E:\Test\FileOutput.txt

คำสั่งนี้เรียกข้อมูลรายการกระบวนการโดยใช้ Get-Process cmdlet และผนวกเอาต์พุตต่อท้ายไฟล์ FileOutput.txt ใน E:\Test< ไดเร็กทอรี หากไม่มีไฟล์ที่ระบุ ไฟล์นั้นจะถูกสร้างขึ้น

คุณยังสามารถใช้พารามิเตอร์ -Encoding เพื่อระบุการเข้ารหัสของไฟล์เอาต์พุต และใช้พารามิเตอร์ -NoNewline เพื่อป้องกันไม่ให้ cmdlet เพิ่มอักขระบรรทัดใหม่ที่ส่วนท้ายของเอาต์พุต

ใช้ Cmdlet เพิ่มเนื้อหา:

Get-Process -Name chrome | Add-Content E:\Test\FileOutput.txt -Encoding UTF8 -NoNewline

Add-Content cmdlet มีประโยชน์เมื่อเราต้องการเขียนเอาต์พุตของคำสั่ง PowerShell ลงในไฟล์ แต่ไม่จำเป็นต้องดำเนินการขั้นสูง เช่น การค้นหาหรืออ่านจากไฟล์ นอกจากนี้ ยังเป็นประโยชน์เมื่อเราต้องการผนวกเอาต์พุตเข้ากับไฟล์ที่มีอยู่ เนื่องจากไม่ได้เขียนทับเนื้อหา

ใช้ Set-Content Cmdlet

ใช้ Set-Content cmdlet เพื่อเปลี่ยนเส้นทางเอาต์พุต PowerShell ไปยังไฟล์

ใช้ชุดเนื้อหา Cmdlet:

Get-Process -Name chrome | Set-Content E:\Test\FileOutput.txt

ในส่วนก่อนหน้านี้ เราได้เรียนรู้เกี่ยวกับพารามิเตอร์ Add-Content และพารามิเตอร์ -Encoding แล้ว คำสั่งนี้คล้ายกับ Add-Content ซึ่งจะดึงรายการกระบวนการโดยใช้ Get-Process cmdlet และเขียนเอาต์พุตไปที่ FileOutput.txt ที่อยู่ในไดเร็กทอรี E:\Test

แต่มันจะเขียนทับเนื้อหาหากไฟล์นั้นมีอยู่แล้ว เช่นเดียวกับ cmdlet Add-Content เรายังสามารถใช้พารามิเตอร์ -Encoding ได้อีกด้วย Set-Content cmdlet มีประโยชน์เมื่อเราต้องการแทนที่เนื้อหาของไฟล์ที่มีอยู่ เนื่องจากจะเขียนทับเนื้อหาของไฟล์

บทความที่เกี่ยวข้อง