Powershellからコマンドをコピーしてドキュメントに貼り付けることもあれば、出力をコピーすることもありますか?Powershellでテキストを選択してコピーするにはどうすればよいですか?
少なくとも、Powershellにテキスト(またはコマンド)を貼り付ける方法は知っています。Powershellを右クリックするだけです。
Powershellからコマンドをコピーしてドキュメントに貼り付けることもあれば、出力をコピーすることもありますか?Powershellでテキストを選択してコピーするにはどうすればよいですか?
少なくとも、Powershellにテキスト(またはコマンド)を貼り付ける方法は知っています。Powershellを右クリックするだけです。
回答:
コンソールウィンドウでテキストを選択し、Enterキーまたはマウスの右ボタンを押すだけです。その選択されたテキストはクリップボードに残ります。
これは、コンソールウィンドウでクイック編集モードが有効になっている場合にのみ機能することに注意してください。そうでない場合は、コンソールウィンドウのプロパティ(システムメニュー→プロパティ→オプション)で有効にするか、システムメニュー→編集→マーク(英語のWindowsではAlt +スペース、E、K)でマークモードに入ります。
または、clip.exeを使用してコマンドの出力をクリップボードに直接送信します。たとえば、
Get-ChildItem C:\Test -recurse | Clip
Set-Clipboard
、PSCXから使用できます。
clip.exe
、正しくハンドルUnicodeは:PSの設定$OutputEncoding
最初のBOMレスUTF-16に変数を、次のように:$OutputEncoding = New-Object System.Text.UnicodeEncoding($false, $false)
Notepad(C#またはPowershell)などのアプリケーションにクリップボードのテキストを送信するをご覧ください。さらにいくつかのヒントがあります。ただし、おそらく@Wictorによる回答が最も簡単なソリューションです。
このために、独自のクリップボード機能を構築しました。
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
それがあなたが探しているものであることを願っています。