Jak skopiować tekst z PowerShell


56

Czasami chcę skopiować polecenie z programu Powershell, aby wkleić dokument, czy chcę skopiować dane wyjściowe? Jak mogę zaznaczać i kopiować tekst w PowerShell?

Przynajmniej znam sposób wklejania tekstu (lub polecenia) do Powershell: wystarczy kliknąć Powershell prawym przyciskiem myszy.


2
Możesz przenieść odpowiedzi niezwiązane z SharePoint do bardziej ogólnej witryny przepełnienia stosu. Rozumiem, że prawdopodobnie używasz PowerShell w połączeniu z SharePoint, ale to pytanie nie należy tutaj.
Jeroen Ritmeijer

Zgadzam się. To nie jest czyste pytanie Sharepoint.

Odpowiedzi:


49

Wystarczy zaznaczyć tekst w oknie konsoli i nacisnąć enter lub prawy przycisk myszy. Ten zaznaczony tekst trafia do schowka.

Zauważ, że zadziała to tylko wtedy, gdy tryb QuickEdit jest włączony dla okna konsoli. Jeśli nie jest, włącz go we właściwościach okna konsoli (menu System → Właściwości → Opcje) lub przejdź do trybu Oznacz za pomocą menu System → Edycja → Zaznacz (Alt + Spacja, E, K w angielskim systemie Windows).


Użycie klawisza Shift do podświetlenia tekstu (tekst zmienia kolor na biały) nie działało dla mnie. Musiałem użyć myszy, aby podświetlić tekst (tekst zmienia kolor na pomarańczowy)
reggaeguitar

25

Lub wyślij dane wyjściowe polecenia bezpośrednio do schowka za pomocą clip.exe Na przykład:

Get-ChildItem C:\Test -recurse | Clip

fajka z klipsem to także dobra alternatywa! Dziękuję Ci!

7
Jednak to nie będzie działać z Unicode. W takim przypadku możesz użyć Set-Clipboardz PSCX.
Joey,

7
Istnieje sposób, aby clip.exepoprawnie obsługiwać Unicode: $OutputEncodingnajpierw ustaw zmienną PS na UTF-16 bez BOM, w następujący sposób:$OutputEncoding = New-Object System.Text.UnicodeEncoding($false, $false)
mklement0

Ta ostatnia sztuczka była tym, czego szukałem tutaj! Dzięki
:)


2

Przejdź do paska menu, w lewym górnym rogu, Edytuj , Wybierz wszystko , Kopiuj , wklej do notatnika


1

W tym celu zbudowałem własną funkcję schowka.

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()
    }
}

Przykładowa linia poleceń:

Get-Process | Out-Clipboard

Mam nadzieję, że tego właśnie szukasz.


Twój kod nie działa na moim polu: New-Object: Nie można znaleźć typu [System.Windows.Forms.TextBox]: upewnij się, że zestaw zawierający ten typ jest załadowany. W linii: 5 znaków: 25 + $ tb = Nowy obiekt <<<< System.Windows.Forms.TextBox + CategoryInfo: InvalidType: (:) [Nowy-obiekt], PSArgumentException + FullyQualifiedErrorId: TypeNotFound, Microsoft.PowerShell.Commands .NewObjectCommand

1
Jeśli sprawdzisz pscx.codeplex.com , jedną z funkcji udostępnianych przez rozszerzenia społeczności jest schowek

1
To bardzo imponujące, @CosmosKey! Dzięki za wzmiankę o pscx.codeplex.com, @Winfred!
Anatolij Mironow

1

Set-Clipboardjest standardowym poleceniem cmdlet od Powershell v5.0. W niektórych przypadkach powinieneś przekonwertować obiekty na tekst Out-Stringprzed przesłaniem wyników do schowka:

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

0

Jeśli chcesz skopiować ostatnie wpisane polecenie do schowka, przydatne jest następujące polecenie (szczególnie w przypadku poleceń obejmujących wiele wierszy):

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

Jeśli chcesz powtórzyć ostatnie polecenie i skopiować jego dane wyjściowe do schowka, użyj:

Invoke-History | Set-Clipboard

Uwaga: powinieneś to robić tylko w przypadku niedrogich i idempotentnych poleceń bez żadnych skutków ubocznych.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.