powershell 클립보드에 복사: Ctrl+C 및 Ctrl+V 이상

PowerShell에서 코드를 작성할 때 마지막으로 생각할 것은
Windows 클립보드입니다. 아마 모두가 유명한 Ctrl-C와 Ctrl-V 키보드 단축키를 통해 클립보드에서 복사하고 붙여넣기하는 방법을 알고 있을 것입니다. 하지만 이는 일반적으로 GUI를 통해 이루어집니다. PowerShell 스크립트에서는 그렇게 유용하지 않습니다. 그러나 PowerShell에서 클립보드로 복사하는 기능이 있는지 알고 계셨나요?

이 문서에서는 PowerShell에서 복사 및 붙여넣기 기능을 얻는 방법과 PowerShell 버전 5부터 제공되는 cmdlet을 소개하겠습니다.

PowerShell v5 이전에 클립보드로 복사하는 유일한 방법은 clip.exe 응용 프로그램을 사용하는 것이었습니다.

옛날 clip.exe

이 응용 프로그램은 오랫동안 사용되어 왔으며 작동했습니다. 텍스트를 clip.exe로 보내면 텍스트가 클립보드에 복사됩니다. 이는 작동하지만 각 항목 뒤에 개행 문자가 추가되어 짜증났습니다.

PS51> Write-Output 'Hello' | clip
The PowerShell copy to clipboard function can replace the old school clip.exe

뿐만 아니라 클립보드에서 정보를 가져 오는 쉬운 방법이 없었습니다. 클립보드에 내용물이 들어간 후에 수동으로 내용물을 붙여넣어야 했습니다. 이제 기본 클립보드 명령으로 이러한 문제를 해결할 수 있습니다!

이제 두 개의 cmdlet인 Get-ClipboardSet-Clipboard이 이 문제를 훨씬 더 잘 해결합니다.

Set-Clipboard PowerShell 명령어

Set-Clipboardclip.exe를 대체하면서 동일하게 작동합니다. 이제 출력을 clip에 파이핑하는 대신 Set-Clipboard을 사용할 수 있습니다. 이렇게 하면 내용을 붙여넣을 때 마지막 개행 문자가 사라진 것을 알 수 있습니다.

클립보드에는 이제 문자열 Hello만 포함되어 있습니다.

PS> Write-Output 'Hello' | Set-Clipboard

Set-Clipboard의 또 다른 유용한 기능은 Append 매개변수입니다. 기존에는 클립보드에 하나의 항목만 저장할 수 있었습니다. 이제 Set-ClipboardAppend 매개변수를 함께 사용하여 이전 항목을 제거하지 않고 무제한의 항목을 추가할 수 있습니다.

PS> Write-Output 'Hello' | Set-Clipboard -Append

Get-Clipboard 매개변수

Set-Clipboard을 사용하여 클립보드에 내용을 복사하지 않더라도, 단순한 문자열 이외의 몇 가지 다른 유형을 이해하는 데 Get-Clipboard을 사용할 수 있습니다. 예를 들어, 파일 탐색기에서 파일 목록을 복사한 경우 이 목록을 PowerShell 콘솔로 가져오려면 Get-ClipboardFormat 매개변수와 �FileDropList 값 사용하면 됩니다.

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

클립보드에 있는 데이터 유형이 파일 목록임을 알 수 있습니다. 또한, 이미지 및 기타 엔티티에 대해서도 동일한 작업을 수행할 수 있습니다.

다른 응용 프로그램에서 이미지를 복사하고 -Format Image를 사용하여 이미지에 대한 다양한 속성을 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에서 클립보드 조작하기

유감스럽게도, PowerShell Core (v6+)에서는 Get-ClipboardSet-Clipboard 명령이 사용할 수 없지만 WindowsCompatibility 모듈을 사용하여 여전히 사용할 수 있습니다. WindowsCompatibility 모듈을 사용하면 PowerShell Core 내에서 Windows PowerShell cmdlet을 사용할 수 있습니다.

WindowsCompatibility 모듈을 설치한 후에는 Invoke-WinCommand를 실행하고 Get-ClipboardSet-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을 사용하여 클립보드를 복사하고 클립보드에서 지능적으로 붙여넣기할 수 있도록 Get-ClipboardSet-Clipboard를 사용할 수 있습니다. 이러한 cmdlet을 사용하면 PowerShell을 사용하여 클립보드로 복사하고 지능적으로 붙여넣기할 수 있습니다.

cmdlet의 자세한 도움말을 보려면 다음을 확인하십시오:

PS51> Get-Help Set-Clipboard -Detailed
PS51> Get-Help Get-Clipboard -Detailed

이를 통해 시도할 수 있는 다양한 매개변수를 모두 확인할 수 있습니다.

Source:
https://adamtheautomator.com/powershell-copy-to-clipboard/