Cách sao chép văn bản từ PowerShell


56

Đôi khi tôi muốn sao chép một lệnh từ Powershell để dán vào tài liệu, hoặc tôi muốn sao chép đầu ra? Làm cách nào tôi có thể chọn và sao chép văn bản trong Powershell?

Ít nhất tôi biết một cách để dán một văn bản (hoặc một lệnh) vào Powershell: bạn chỉ cần nhấp chuột phải vào Powershell.


2
Bạn có thể muốn di chuyển các câu trả lời không liên quan đến SharePoint sang trang web Stack Overflow chung chung hơn. Tôi đánh giá cao bạn có thể đang sử dụng PowerShell kết hợp với SharePoint, nhưng câu hỏi này không thuộc về nơi này.
Jeroen Ritmeijer

Tôi đồng ý. Nó không phải là một câu hỏi Sharepoint thuần túy.

Câu trả lời:


49

Chỉ cần chọn văn bản trong cửa sổ giao diện điều khiển và nhấn enter hoặc nút chuột phải. Văn bản được chọn đó kết thúc trong clipboard của bạn.

Lưu ý rằng điều này sẽ chỉ hoạt động nếu chế độ QuickEdit được bật cho cửa sổ giao diện điều khiển. Nếu không, thì kích hoạt nó trong thuộc tính cửa sổ giao diện điều khiển (Menu hệ thống → Thuộc tính → Tùy chọn) hoặc vào chế độ Đánh dấu qua menu Hệ thống → Chỉnh sửa → Đánh dấu (Alt + Space, E, K trên Windows tiếng Anh).


Sử dụng phím shift để làm nổi bật văn bản (văn bản chuyển sang màu trắng) không phù hợp với tôi. Tôi đã phải sử dụng chuột để làm nổi bật văn bản (văn bản chuyển sang màu cam)
reggaeg Ức

25

Hoặc gửi đầu ra của lệnh trực tiếp vào clipboard bằng clip.exe, ví dụ:

Get-ChildItem C:\Test -recurse | Clip

một ống với clip ia tốt thay thế, quá! Cảm ơn bạn!

7
Điều này sẽ không hoạt động với Unicode, mặc dù. Trong trường hợp đó bạn có thể sử dụng Set-Clipboardtừ PSCX.
Joey

7
Có một cách để clip.exexử lý Unicode chính xác: đặt $OutputEncodingbiến PS thành UTF-16 không BOM trước, như sau:$OutputEncoding = New-Object System.Text.UnicodeEncoding($false, $false)
mkuity0

Thủ thuật cuối cùng này là những gì tôi tìm kiếm ở đây! Cảm ơn :)
sodawvel


2

Chuyển đến thanh thực đơn, trên cùng bên trái, Chỉnh sửa , Chọn Tất cả , Sao chép , dán vào notepad


1

Tôi đã xây dựng funciton của riêng mình cho việc này.

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

Dòng lệnh mẫu:

Get-Process | Out-Clipboard

Hy vọng đó là những gì bạn đang tìm kiếm.


Mã của bạn không hoạt động trên hộp của tôi: New-Object: Không thể tìm thấy loại [System.Windows.Forms.TextBox]: đảm bảo lắp ráp có chứa loại này được tải. Tại dòng: 5 char: 25 + $ tb = New-Object <<<< System.Windows.Forms.TextBox + CategoryInfo: UnlimitedType: (:) [New-Object], PSArgumentException + FullQualifiedErrorId: TypeNotFound, Microsoft.PowerShell.Comm .NewObjectCommand

1
Nếu bạn kiểm tra pscx.codeplex.com , một trong những chức năng được cung cấp bởi các tiện ích mở rộng cộng đồng là out-clipboard

1
Nó rất ấn tượng, @CosmosKey! Cảm ơn bạn đã đề cập đến pscx.codeplex.com, @Winfred!
Anatoly Mironov

1

Set-Clipboardlà lệnh ghép ngắn tiêu chuẩn kể từ Powershell v5.0. Trong một số trường hợp, bạn nên chuyển đổi các đối tượng thành văn bản Out-Stringtrước khi kết quả đường ống vào bảng tạm:

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

0

Nếu bạn muốn sao chép lệnh cuối cùng bạn đã nhập vào bảng tạm, lệnh sau đây rất hữu ích (đặc biệt đối với các lệnh kéo dài nhiều dòng):

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

Nếu bạn muốn lặp lại lệnh cuối cùng và sao chép đầu ra của nó vào bảng tạm, hãy sử dụng:

Invoke-History | Set-Clipboard

Hãy cẩn thận: bạn chỉ nên làm điều này cho các lệnh rẻ tiền và bình thường mà không có bất kỳ tác dụng phụ nào.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.