如何将任意类型剪贴板数据存入变量用于哈希?含Get-Clipboard -raw实现
剪贴板任意类型数据的哈希计算(基于Get-Clipboard -Raw)
核心说明
Get-Clipboard -Raw主要用于读取文本类剪贴板内容(纯文本、富文本等可转换为字符串的数据),通过将字符串还原为原始字节数组,即可传入Get-FileHash计算哈希。但对于二进制数据(如图片、文件),-Raw无法正确读取原始字节,这类场景仍需使用对应-Format参数(如-Format Image)处理。
文本类数据哈希计算代码
# 读取剪贴板原始文本内容 $rawClipboard = Get-Clipboard -Raw # 选择对应编码转换为字节数组(示例用UTF-8,可根据实际调整) $byteData = [System.Text.Encoding]::UTF8.GetBytes($rawClipboard) # 初始化内存流 $memStream = [System.IO.MemoryStream]::new($byteData) # 计算SHA1哈希并输出 $hashValue = Get-FileHash -InputStream $memStream -Algorithm SHA1 | Select-Object -ExpandProperty Hash Write-Host $hashValue
关键注意事项
- 编码匹配:如果剪贴板文本使用非UTF-8编码(如GB2312、Unicode),需替换为对应编码类,例如
[System.Text.Encoding]::Unicode或[System.Text.Encoding]::GetEncoding("GB2312"),否则会因字节还原错误导致哈希值偏差。 - 二进制数据限制:若剪贴板中是图片、文件等二进制内容,
-Raw会读取为乱码字符串,无法还原原始字节流,此时建议使用你已实现的-Format Image这类针对性参数来获取原始对象,再转存为内存流计算哈希。
内容的提问来源于stack exchange,提问作者bitbar
相关产品推荐
相关产品推荐

