【发布时间】:2015-02-17 21:21:11
【问题描述】:
我使用的是 Powershell 2.0。
我有一个包含单个 SHA256 哈希值的变量(对应于文件的哈希值,此处为 $filename):
$filename = "C:\aaa\aaa.exe"
$sha256Value = ... # The hash for $filename
我想将该值保存到文件中。这是我尝试的第一个解决方案:
$sha256Value | Out-File -FilePath ($filename + ".sha256")
文件的大小(不在磁盘上)为 134 字节。使用此命令,它会在 .sha256 文件中生成换行符。
我尝试的第二种解决方案:
[IO.File]::AppendAllText(($filename + ".sha256"),$sha256Value,[System.Text.Encoding]::UTF8)
使用第二个选项,文件大小(不在磁盘上)为 67 字节,并且也不包含换行符。
也只需删除 UTF8 编码,我就可以将文件大小缩小到 64 字节。
还有其他可以减小文件大小的解决方案吗?此外,是否可以为第一个解决方案(即使用 Out-File)获得相同的文件大小?
【问题讨论】:
-
out-file有一个编码参数:Out-File -FilePath ($filename + ".sha256") -encoding UTF8 -
@Lee,它确实将文件大小降低到 69 字节。但是,仍然存在换行符。
-
大多数 PowerShell cmdlet,如
Set-Content和Out-File都会添加换行符。 -
您是否需要文件为人类可读格式(可以在文本编辑器中打开以查看哈希数字)?
-
@Imortist,该文件不必是人类可读的。因此,如果它提供最小的文件,我会接受一个人类不可读的解决方案。
标签: powershell hash powershell-2.0 line-breaks sha256