サンプル(PowerShell5系)
Get-Clipboard -Format Text -TextFormatType Html
解説
- 画像かテキストかでいえばテキスト
- テキストもプレーンテキストとして取り出す方法もあるけど、HTML形式で取り出す方法もある
- HTML形式で取り出すとゴリゴリのインラインCSSがたっぷり入ったHTMLが帰ってくる)
PowerShell7系は使い物にならないのでやめておけ
2023-05-06時点でのPowerShell7系では-TextFormatType
のパラメータが消えてるのでこの手法が使えるのは、PowerShell5系のみ。このレベルで互換性がなくなってるのでPowerShell7は別物と認識した方が良さそう。.netフレームワークを直で呼び出す方法も互換性がなくなってるのでたちが悪い。
実行ファイルは私の手元のWindows11上では以下のように共存できている。
PowerShell5系
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
PowerShell7系
"C:\Program Files\PowerShell\7\pwsh.exe" -WorkingDirectory ~
実行ファイル名から違うので、仮に両方にパスが通っていても共存はできる。
ただ、こんなにも別モノで互換性のないものにバージョン番号つけちゃってどうするんだろうという心配。
別解としてのpythonは無理でした
pythonにもwin32clipboard
というモジュールがあるのでそれでクリップボードにアクセスできそうにも見えたが、テキストフォーマットのサブフォーマットとしてのHTMLは選択できなかった。
残課題ーEncode
上記のサンプルの画像のように日本語部分が文字化けしている。UTF8の文字列をSJIS扱いで表示している状態の文字化け。Get-Clipbord時点での文字化けなのか、標準出力時の文字化けなのかの切り分けがまだできてないので、この課題は宿題。
別解- ブラウザを使う
PowerShellがとても扱いづらいので、ワンアクション必要だけどブラウザ上のリッチエディタ上にペーストさせれば、InnerHTMLでHTMLテキストは取得できる。こっちの方がマルチOSでいい。エンコードも気にしないでもいい。