การใช้ฟังก์ชันคัดลอก PowerShell ไปยังคลิปบอร์ด
เมื่อเขียนโค้ดใน PowerShell สิ่งสุดท้ายที่คุณอาจนึกถึงคือ
คลิปบอร์ดของ Windows เราทุกคนคงรู้จักแป้นพิมพ์ลัด Ctrl-C และ Ctrl-V ที่น่าอับอายในการคัดลอกและวางจากคลิปบอร์ด แต่โดยทั่วไปจะทำผ่าน GUI ในสคริปต์ PowerShell ของเรา มันไม่มีประโยชน์มากนัก อย่างไรก็ตาม คุณรู้หรือไม่ว่ามีฟังก์ชันคัดลอก PowerShell ไปยังคลิปบอร์ด
ในบทความนี้ ฉันจะอธิบายวิธีที่เราเคยรับฟังก์ชันการคัดลอกและวางใน PowerShell จากนั้นแนะนำให้คุณรู้จักกับ cmdlets ที่ PowerShell มีให้โดยเริ่มตั้งแต่เวอร์ชัน 5
ก่อน PowerShell v5 วิธีเดียวที่จะคัดลอกไปยังคลิปบอร์ดได้คือการใช้แอปพลิเคชัน clip.exe
คลิปโรงเรียนเก่า.exe
แอปพลิเคชันนี้มีมานานแล้วและเพิ่งใช้งานได้ ด้วยการไพพ์ข้อความไปที่ clip.exe คุณสามารถคัดลอกข้อความไปยังคลิปบอร์ดได้ สิ่งนี้ได้ผล แต่มันก็น่ารำคาญอยู่เสมอเมื่อเพิ่มการส่งคืนรถหลังจากแต่ละรายการ
PS51> Write-Output 'Hello' | clipไม่เพียงแค่นั้น เราไม่มีวิธีที่ง่ายในการดึงข้อมูลจากคลิปบอร์ด เราถูกบังคับให้วางเนื้อหาด้วยตนเองเมื่อเนื้อหาเหล่านั้นอยู่ในคลิปบอร์ด ด้วยคำสั่งคลิปบอร์ดดั้งเดิม นี่ไม่ใช่อีกต่อไป!
ตอนนี้เรามี cmdlets สองตัวที่แก้ปัญหานี้ได้ดีขึ้นมาก รับคลิปบอร์ด และ ชุดคลิปบอร์ด
คำสั่ง Powershell ชุดคลิปบอร์ด
Set-Clipboard แทนที่ clip.exe แต่ทำงานเหมือนกันทุกประการ ตอนนี้ แทนที่จะไปป์เอาต์พุตไปที่ คลิป คุณสามารถใช้ Set-Clipboard ได้ หากคุณทำเช่นนี้ คุณจะสังเกตเห็นว่าการคืนแคร่ต่อท้ายหายไปเมื่อคุณวางเนื้อหาไว้ที่ใดที่หนึ่ง
ขณะนี้คลิปบอร์ดมีเพียงสตริง Hello เท่านั้น
PS> Write-Output 'Hello' | Set-Clipboardคุณสมบัติที่มีประโยชน์อีกอย่างหนึ่งของ Set-Clipboard คือพารามิเตอร์ Append ตามเนื้อผ้า คลิปบอร์ดสามารถจัดเก็บได้เพียงรายการเดียวเท่านั้น ขณะนี้ เมื่อใช้พารามิเตอร์ ผนวก กับ Set-Clipboard คุณสามารถเพิ่มรายการได้ไม่จำกัดจำนวนโดยไม่ต้องลบรายการก่อนหน้า
PS> Write-Output 'Hello' | Set-Clipboard -Appendรับพารามิเตอร์คลิปบอร์ด
แม้ว่าคุณจะไม่ได้ใช้ Set-Clipboard เพื่อคัดลอกเนื้อหาไปยังคลิปบอร์ด คุณยังคงสามารถใช้ Get-Clipboard เพื่อทำความเข้าใจประเภทต่างๆ สองสามประเภทนอกเหนือจากสตริงธรรมดา ตัวอย่างเช่น หากคุณคัดลอกและรายการไฟล์จาก File Explorer และต้องการนำรายการนี้ไปยังคอนโซล PowerShell เพียงใช้พารามิเตอร์ Format และ ค่า �FileDropList บน Get-Clipboard
PS51> Get-Clipboard -Format FileDropList
Directory: \\Mac\Home\Downloads
Mode LastWriteTime Length Name
---- ------------- ------ ----
------ 8/1/2019 10:42 AM 17919094 00_03_xr30_whatyoushouldhave.mov
Directory: \\Mac\Home\Documents\Snagit\Autosaved Captures.localized
Mode LastWriteTime Length Name
---- ------------- ------ ----
------ 8/1/2019 1:58 PM 169144472 2019-08-01_13-47-55.mp4
จะเห็นว่าเข้าใจประเภทข้อมูลในคลิปบอร์ดเป็นรายการไฟล์ นอกจากนี้ คุณยังสามารถทำเช่นเดียวกันกับรูปภาพและเอนทิตีอื่นๆ ได้
คัดลอกรูปภาพจากแอปพลิเคชันอื่น และใช้ให้ -จัดรูปแบบรูปภาพ ไปที่ Get-Clipboard เพื่อดึงคุณสมบัติต่างๆ เกี่ยวกับรูปภาพ
PS51> Get-Clipboard -Format Image
Tag :
PhysicalDimension : {Width=813, Height=113}
Size : {Width=813, Height=113}
Width : 813
Height : 113
HorizontalResolution : 96
VerticalResolution : 96
Flags : 335888
RawFormat : [ImageFormat: b96b3caa-0728-11d3-9d7b-0000f81ef32e]
PixelFormat : Format32bppRgb
Palette : System.Drawing.Imaging.ColorPalette
FrameDimensionsList : {7462dc86-6180-4c7e-8e3f-ee7333a7a483}
PropertyIdList : {}
PropertyItems : {}การจัดการคลิปบอร์ดใน PowerShell Core
ขออภัย คำสั่ง Get-Clipboard และ Set-Clipboard ไม่มีใน PowerShell Core (v6+) แต่คุณยังสามารถใช้คำสั่งเหล่านี้โดยใช้โมดูล WindowsCompatibility โมดูล WindowsCompatibility อนุญาตให้คุณใช้ Windows PowerShell cmdlets ภายใน PowerShell Core
เมื่อคุณติดตั้งโมดูล WindowsCompatibility แล้ว ให้รัน Inrigg-WinCommand และรวมการอ้างอิง Get-Clipboard และ Set-Clipboard ไว้ภายใน
PS622> Invoke-WinCommand -ScriptBlock {'This is on the clipboard' | Set-ClipBoard}
PS622> Invoke-WinCommand -ScriptBlock {Get-ClipBoard}
This is on the clipboardคุณจะพบว่าคุณสามารถอ่านและเขียนลงในคลิปบอร์ดได้เช่นเดียวกับที่คุณทำกับ Windows PowerShell
สรุป
คุณสามารถทำสิ่งต่างๆ ได้มากขึ้นด้วยคลิปบอร์ดใน PowerShell ในปัจจุบัน การคัดลอก PowerShell ไปยังคลิปบอร์ดสามารถทำได้โดยใช้ Get-Clipboard และ Set-Clipboard cmdlet เหล่านี้ช่วยให้คุณใช้ PowerShell เพื่อคัดลอกไปยังคลิปบอร์ดและวางจากคลิปบอร์ดได้อย่างชาญฉลาดเช่นกัน
สำหรับรายละเอียดทั้งหมดของ cmdlets โปรดดูความช่วยเหลือโดยละเอียด:
PS51> Get-Help Set-Clipboard -Detailed
PS51> Get-Help Get-Clipboard -Detailedนี่จะให้พารามิเตอร์ต่างๆ ทั้งหมดที่คุณสามารถลองใช้ได้