PowerShell에서 텍스트를 복사하는 방법


56

때로는 Powershell의 명령을 복사하여 문서에 붙여 넣거나 출력을 복사하고 싶습니까? Powershell에서 텍스트를 선택하고 복사하려면 어떻게해야합니까?

적어도 Powershell에 텍스트 (또는 명령)를 붙여 넣는 방법을 알고 있습니다. Powershell을 마우스 오른쪽 버튼으로 클릭하면됩니다.


2
비 SharePoint 관련 답변을보다 일반적인 스택 오버플로 사이트로 이동할 수 있습니다. SharePoint와 함께 PowerShell을 사용하고 있다고 생각하지만이 질문은 여기에 속하지 않습니다.
Jeroen Ritmeijer

동의한다. 순수한 Sharepoint 질문이 아닙니다.

답변:


49

콘솔 창에서 텍스트를 선택하고 Enter 또는 마우스 오른쪽 버튼을 누르십시오. 선택한 텍스트가 클립 보드에 나타납니다.

콘솔 창에서 QuickEdit 모드가 활성화 된 경우에만 작동합니다. 그렇지 않은 경우 콘솔 창 속성 (시스템 메뉴 → 속성 → 옵션)에서 활성화하거나 시스템 메뉴 → 편집 → 마크 (영어 Windows의 경우 Alt + Space, E, K)를 통해 마크 모드로 들어갑니다.


Shift 키를 사용하여 텍스트를 강조 표시하면 (텍스트가 흰색으로 변함) 작동하지 않았습니다. 마우스를 사용하여 텍스트를 강조 표시해야했습니다 (텍스트가 주황색으로 바))
reggaeguitar

25

또는 clip.exe를 사용하여 명령 출력을 클립 보드로 직접 보냅니다. 예를 들어,

Get-ChildItem C:\Test -recurse | Clip

클립 대안이있는 파이프도 좋은 대안입니다! 감사합니다!

7
그러나 유니 코드에서는 작동하지 않습니다. 이 경우 Set-ClipboardPSCX에서 사용할 수 있습니다 .
Joey

7
clip.exe유니 코드를 올바르게 처리 하는 방법이 있습니다 . PS의 $OutputEncoding변수를 먼저 BOM이없는 UTF-16으로 설정하십시오.$OutputEncoding = New-Object System.Text.UnicodeEncoding($false, $false)
mklement0

이 마지막 요령은 내가 여기 온 것입니다! 감사합니다
:)


2

메뉴 바로 이동, 왼쪽 상단, 편집 , 모두 선택 , 복사 , 메모장에 붙여 넣기


1

이를 위해 자체 클립 보드 기능을 작성했습니다.

Function Out-Clipboard{
    param($Value,[switch]$PassThru) 
    begin {
            [void][reflection.assembly]::LoadWithPartialName("Windows.Forms")
        $tb = New-Object System.Windows.Forms.TextBox
        $tb.Multiline = $true
        $pipeObjects = @()
    }
    process {
      $pipeObjects+=$_
    }
    end {
        if([string]::IsNullOrEmpty($Value)){
            $text=$null
            $pipeObjects | out-string -stream | %{$text = $text + $(if($text -ne $null){"`r`n"}) + $_}
            $tb.text = $text
        } 
        else {
            $tb.text = $value
        }
        $tb.SelectAll()
        $tb.Copy()
        if($PassThru){
            $pipeObjects
        }
        $tb.Dispose()
    }
}

샘플 명령 줄 :

Get-Process | Out-Clipboard

그것이 당신이 찾고있는 것이기를 바랍니다.


내 상자에서 코드가 작동하지 않습니다. New-Object : [System.Windows.Forms.TextBox] 형식을 찾을 수 없습니다 :이 형식이 포함 된 어셈블리가로드되어 있는지 확인하십시오. 줄 : 5 char : 25 + $ tb = New-Object <<<< System.Windows.Forms.TextBox + CategoryInfo : InvalidType : (:) [New-Object], PSArgumentException + FullyQualifiedErrorId : TypeNotFound, Microsoft.PowerShell.Commands .NewObjectCommand

1
pscx.codeplex.com 을 확인 하면 커뮤니티 확장에서 제공하는 기능 중 하나가 클립 보드가 아닙니다 .

1
@CosmosKey는 매우 인상적입니다! @Winfred pscx.codeplex.com을 언급 해 주셔서 감사합니다!
아나톨리 미로 노프

1

Set-ClipboardPowershell v5.0부터 표준 cmdlet입니다. 경우에 따라 Out-String결과를 클립 보드로 파이프하기 전에 객체를 텍스트로 변환해야합니다 .

Get-ChildItem C:\Windows -recurse -depth 1 | Out-String -stream | Set-Clipboard

0

입력 한 마지막 명령을 클립 보드에 복사하려면 다음 명령이 유용합니다 (특히 여러 줄에 걸쳐있는 명령).

(Get-History -Count 1).CommandLine | Set-Clipboard

마지막 명령을 반복하고 출력을 클립 보드에 복사하려면 다음을 사용하십시오.

Invoke-History | Set-Clipboard

주의 사항 : 부작용없이 저렴하고 dem 등한 명령에 대해서만이 작업을 수행해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.