web-dev-qa-db-ja.com

PowerShellからテキストをコピーする方法

Powershellからコマンドをコピーしてドキュメントに貼り付けたい場合や、出力をコピーしたい場合がありますか。 Powershellでテキストを選択してコピーする方法

少なくとも私はテキスト(またはコマンド)をPowershellに貼り付ける方法を知っています。PowerShellを右クリックするだけです。

55
Anatoly Mironov

コンソールウィンドウでテキストを選択してEnterキーまたはマウスの右ボタンを押すだけです。選択したテキストはクリップボードに入ります。

これは、QuickEditモードがコンソールウィンドウで有効になっている場合にのみ機能することに注意してください。そうでない場合は、コンソールウィンドウのプロパティ(システムメニュー→プロパティ→オプション)で有効にするか、システムメニュー→編集→マーク(英語のWindowsではAlt + Space、E、K)でマークモードに入ります。

または、clip.exeを使用してコマンドの出力を直接クリップボードに送信します。例えば、

Get-ChildItem C:\Test -recurse | Clip
24
ravikanth

左上のメニューバーに移動します。編集すべて選択コピーメモ帳に貼り付け

2
zoom

メモ帳(C#またはPowershell)のようなアプリケーションにクリップボードのテキストを送信する をご覧ください。もう少しヒントがあります。ただし、@ Wictorによる回答がおそらく最も簡単な解決策です。

2
stej

Set-Clipboardは、Powershell v5.0以降の標準のコマンドレットです。場合によっては、結果をクリップボードにパイプする前に、オブジェクトをOut-Stringでテキストに変換する必要があります。

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

私はこれのために私自身のクリップボード外の関数を作ります。

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

それがあなたが探しているものであることを願っています。

1
CosmosKey

最後に入力したコマンドをクリップボードにコピーしたい場合は、次のコマンドが便利です(特に複数行にわたるコマンドの場合)。

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

最後のコマンドを繰り返してその出力をクリップボードにコピーしたい場合は、次のようにします。

Invoke-History | Set-Clipboard

警告:これは、副作用がなく、安価で冪等なコマンドに対してのみ行うべきです。

0
wensveen