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


56

Powershellからコマンドをコピーしてドキュメントに貼り付けることもあれば、出力をコピーすることもありますか?Powershellでテキストを選択してコピーするにはどうすればよいですか?

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


2
SharePointに関連しない回答をより一般的なStack Overflowサイトに移動することができます。おそらくPowerShellをSharePointと組み合わせて使用​​していることに感謝しますが、この質問はここにはありません。
Jeroen Ritmeijer

同意する。これは純粋なSharepointの質問ではありません。

回答:


49

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

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


Shiftキーを使用してテキストを強調表示(テキストが白に変わる)しても機能しませんでした。マウスを使用してテキストを強調表示する必要がありました(テキストがオレンジ色に変わります)
reggaeguitar

25

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

Get-ChildItem C:\Test -recurse | Clip

クリップ付きパイプも良い選択肢です!ありがとうございました!

7
ただし、これはUnicodeでは機能しません。その場合Set-Clipboard、PSCXから使用できます。
ジョーイ

7
持ってする方法がありclip.exe、正しくハンドルUnicodeは:PSの設定$OutputEncoding最初のBOMレスUTF-16に変数を、次のように:$OutputEncoding = New-Object System.Text.UnicodeEncoding($false, $false)
mklement0

この最後のトリックは、私がここに来るのを探していたものです!ありがとう:)
sodawillow


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以降の標準コマンドレットです。場合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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.