Cara menyalin teks dari PowerShell

56

Terkadang saya ingin menyalin perintah dari Powershell untuk menempel di dokumen, atau saya ingin menyalin hasilnya? Bagaimana saya bisa memilih dan menyalin teks di Powershell?

Setidaknya saya tahu cara bagaimana menempelkan teks (atau perintah) ke Powershell: Anda cukup klik kanan pada Powershell.

Anatoly Mironov
sumber
2
Anda mungkin ingin memindahkan jawaban terkait non-SharePoint ke situs Stack Overflow yang lebih umum. Saya menghargai Anda mungkin menggunakan PowerShell dalam kombinasi dengan SharePoint, tetapi pertanyaan ini bukan di sini.
Jeroen Ritmeijer
Saya setuju. Ini bukan pertanyaan Sharepoint murni.

Jawaban:

49

Cukup pilih teks di jendela konsol dan tekan enter atau tombol kanan mouse. Teks yang dipilih berakhir di clipboard Anda.

Perhatikan bahwa ini hanya akan berfungsi jika mode QuickEdit diaktifkan untuk jendela konsol. Jika tidak, maka aktifkan di properti jendela konsol (Menu sistem → Properti → Pilihan) atau masuk ke mode Tandai melalui menu Sistem → Edit → Tandai (Alt + Spasi, E, K pada Windows bahasa Inggris).

Wictor Wilen MCA MCM MVP
sumber
Menggunakan tombol shift untuk menyorot teks (teks menjadi putih) tidak berfungsi untuk saya. Saya harus menggunakan mouse untuk menyorot teks (teks berubah menjadi oranye)
reggaeguitar
25

Atau kirim output dari perintah Anda langsung ke clipboard menggunakan clip.exe Misalnya,

Get-ChildItem C:\Test -recurse | Clip
ravikanth
sumber
pipa dengan klip adalah alternatif yang bagus juga! Terima kasih!
7
Ini tidak akan bekerja dengan Unicode. Dalam hal ini Anda dapat menggunakan Set-Clipboarddari PSCX.
Joey
7
ADA cara untuk clip.exemenangani Unicode dengan benar: atur $OutputEncodingvariabel PS ke BOM-less UTF-16 terlebih dahulu, sebagai berikut:$OutputEncoding = New-Object System.Text.UnicodeEncoding($false, $false)
mklement0
Trik terakhir ini adalah apa yang saya cari untuk datang ke sini! Terima kasih
:)
2

Pergi ke menu, kiri atas, Edit , Pilih Semua , Salin , tempel di notepad

Perbesar
sumber
1

Saya telah membangun fungsi clip-out saya sendiri untuk ini.

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

Contoh perintah baris:

Get-Process | Out-Clipboard

Semoga itu yang Anda cari.


sumber
Kode Anda tidak berfungsi di kotak saya: New-Object: Tidak dapat menemukan tipe [System.Windows.Forms.TextBox]: pastikan rakitan yang berisi tipe ini dimuat. Pada baris: 5 char: 25 + $ tb = Objek-Baru <<<< System.Windows.Forms.TextBox + CategoryInfo: InvalidType: (:) [Objek-Baru], PSArgumentException + FullyQualifiedErrorId: TypeNotFound, Microsoft.PowerShell.Commands .NewObjectCommand
1
Jika Anda memeriksa pscx.codeplex.com , salah satu fungsi yang disediakan oleh ekstensi komunitas adalah out-clipboard
1
Sangat mengesankan, @CosmosKey! Terima kasih telah menyebutkan pscx.codeplex.com, @Winfred!
Anatoly Mironov
1

Set-Clipboardadalah cmdlet standar pada Powershell v5.0. Dalam beberapa kasus, Anda harus mengonversi objek menjadi teks Out-Stringsebelum mengirim hasil piping ke clipboard:

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

Jika Anda ingin menyalin perintah terakhir yang Anda ketikkan ke clipboard, perintah berikut berguna (terutama untuk perintah yang menjangkau beberapa baris):

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

Jika Anda ingin mengulangi perintah terakhir, dan menyalin hasilnya ke clipboard, gunakan:

Invoke-History | Set-Clipboard

Peringatan: Anda hanya harus melakukan ini untuk perintah yang murah dan idempoten tanpa efek samping.

Wensveen
sumber