Windowsで「コピー&ペースト」は日常的に使う操作ですが、その「コピーした内容=クリップボードの中身」をPowerShellから直接取得できることをご存知でしょうか?Get-Clipboard
コマンドレットを使えば、クリップボードにあるテキストやファイルの情報を簡単に取得できます。スクリプトの自動化や情報抽出にも非常に便利なこの機能について、基本の使い方から応用まで詳しく解説します。PowerShell初心者の方にもわかりやすいように、実例を交えながらご紹介していきます。
Get-Clipboardとは?
Get-Clipboard
は、PowerShellでクリップボードに現在格納されている内容を取得するためのコマンドレットです。Windows 10以降、PowerShell 5.1以降で使用可能で、クリップボードにある「テキスト」「画像」「ファイルパス」などのデータを取得することができます。
基本構文:
Get-Clipboard
このコマンドを実行すると、クリップボードにあるデータがそのまま表示されます。特に、コピーされたテキストがそのまま取得できるため、手動での操作を省略できるのが大きなメリットです。
使い方①:テキストの取得
たとえば、Webページやメモ帳などで文字列をコピーしたあとに、以下のコマンドを実行してみましょう。
Get-Clipboard
クリップボードにコピーされた文字列がそのままPowerShell上に表示されます。
出力例:
plaintextコピーする編集するPowerShellは便利です。
応用:変数に代入して使う
$clip = Get-Clipboard
Write-Output "コピーされた内容は:$clip"
このように変数に格納して処理を加えることも可能です。テキストファイルへの保存やログ出力にも応用できます。
使い方②:画像やファイルの取得
Get-Clipboard
はテキストだけでなく、画像やファイルの情報も取得できます。ファイルをエクスプローラー上でコピーした状態で以下を実行すると、ファイルパスが表示されます。
Get-Clipboard -Format FileDropList
出力例:
plaintextコピーする編集するC:\Users\user\Documents\example.txt
C:\Users\user\Pictures\image.jpg
このように、複数のファイルパスを取得して、それらをスクリプトで操作することもできます。
使い方③:特定の形式を指定して取得する
-Format
パラメータを使うことで、クリップボードの内容を特定の形式で取得することができます。
主なフォーマット:
Text
:標準テキスト(デフォルト)FileDropList
:ファイルパスリストImage
:画像(System.Drawing.Image 型)Html
:HTML形式
HTML形式で取得:
Get-Clipboard -Format Html
Webページからコピーした内容がHTML形式で保存されていれば、そのままの構造で取得可能です。
使い方④:スクリプトに組み込む
例えば、クリップボードにコピーしたテキストをログファイルに自動で書き出すようなスクリプトを作成できます。
サンプルスクリプト:
$clip = Get-Clipboard
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
"$timestamp - $clip" | Out-File -Append -FilePath "clipboard_log.txt"
このスクリプトを実行すれば、クリップボードの内容がログ形式で clipboard_log.txt
に追記されていきます。作業メモの自動保存などにも活用できます。
よくあるエラーと対処法
エラー①:Get-Clipboard : このシステムでクリップボードにアクセスできません
原因:リモートセッション中など、ローカルでない環境ではクリップボードへのアクセスが制限されている場合があります。
対処法:ローカルのPowerShellセッションで実行するようにしてください。
エラー②:画像やHTML形式が取得できない
原因:コピーされたデータが対象形式に対応していない場合です。
対処法:正しい形式でコピーされていることを確認し、-Format
パラメータを正しく指定してください。
補足:Set-Clipboardとの組み合わせ
Get-Clipboard
と対になるコマンドとして Set-Clipboard
があります。こちらは、任意の内容をクリップボードに書き込むためのコマンドです。
例:クリップボードに文字列を設定
"こんにちは" | Set-Clipboard
この後 Get-Clipboard
を実行すれば、「こんにちは」が表示されるはずです。スクリプトで自動コピー→自動ペーストの流れを作ることもできます。
実践例:クリップボードから特定のキーワードを検索
$clip = Get-Clipboard
if ($clip -like "*エラー*") {
Write-Host "エラーという単語が含まれています。"
} else {
Write-Host "エラーは含まれていません。"
}
このように、コピーした内容に特定のキーワードが含まれているかをチェックして、ログ解析やトラブル対応に役立てることも可能です。
まとめ
Get-Clipboard
コマンドレットは、PowerShellでの自動化やログ取得、コピー操作の拡張に非常に便利なツールです。普段あまり意識していない「クリップボードの中身」をコマンドで操作することで、業務効率をぐんと向上させることができます。
ぜひ日々の作業に取り入れて、PowerShellの便利さを体感してみてください。特にスクリプトと組み合わせることで、より柔軟でパワフルな活用が可能になります。