コピーした画像 や コピーしたExcelのセルのデータ などで 画像として保存可能なクリップボード上のデータを保存するためのPowerShellの例です。
Windows 標準の Windows PowerShell
(PowerShell 5.x) であれば以下のようなコマンドで
クリップボードのデータを画像として保存できます。
(Get-Clipboard -Format Image).Save("Image-file.png")
が、PowerShell Core
(PowerShell 7.x)では、このコマンドはエラーになります(対応していません)
ですので、以下のようなやり方(Windows.Forms.Clipboard
)を使います。
この PowerShell は、クリップボードのデータをデスクトップに ImageFile.png という名前で保存する例です。
<# コピーしたデータ(クリップボードのデータ)を画像としてデスクトップに保存します。 保存時のファイル名は $SaveImgeFile に定義しています #> Add-Type -AssemblyName System.Windows.Forms # 保存用ファイル名 $SaveImgeFile = 'ImageFile.png' $DesktopPath = [System.Environment]::GetFolderPath("Desktop") $clip = [Windows.Forms.Clipboard]::GetImage() if ($null -ne $clip) { $clip.Save($DesktopPath + '\' + $SaveImgeFile) }
以下のPowerShellは単純にファイル名の頭に現在日時情報を付与した例です。その他は上記の例と変わりません。
<# コピーしたデータ(クリップボードのデータ)を画像としてデスクトップに保存します。 保存時のファイル名のSuffixは $SaveImgeFile に定義しています #> Add-Type -AssemblyName System.Windows.Forms # 保存用ファイル名 $SaveImgeFile = 'ImageFile.png' $SaveFileNamePrefix = Get-Date -Format "yyyyMMdd-HHmmssfff" $DesktopPath = [System.Environment]::GetFolderPath("Desktop") $clip = [Windows.Forms.Clipboard]::GetImage() if ($null -ne $clip) { $clip.Save($DesktopPath + '\' + $SaveFileNamePrefix + '_' + $SaveImgeFile) }
というわけで、クリップボードに画像として保存可能なデータがある状態で、上記のPowerShellを実行すれば画像として保存されます。