我用PowerShell编写了一个小的用户界面,以创建舒适的校验和。目前,我看到使用ISE和Powershell本身之间的区别。
在ISE中运行PowerShell脚本时,我得到了完美的结果。 这是我正在使用的代码(只是一个片段):
$aaa = (Get-FileHash -Algorithm SHA512 -Path $str_filepath |
Select-Object -Property hash |
Format-Table -HideTableHeaders |
Out-string).TrimEnd().TrimStart()
因此,我从文件创建校验和(SHA512)。这些是一个文件的结果,例如:
在ISE中运行脚本:
0518E6DF62AB7B8D7A238039262C7A0E9F1F457D514EDE2BB8B3F4719340EF4B61053EC85ED30D07688B447DBC756F3A7455D7E0C84C7BCF62A8884E4715C8A0
在PowerShell中运行脚本:
0518E6DF62AB7B8D7A238039262C7A0E9F1F457D514EDE2BB8B3F4719340EF4B61053EC85ED30D07688B447DBC756F3A7455D7E0C84C7BCF62A8...
如您所见,使用PowerShell时字符串会缩短。更令人困惑的是,缩短不是一致的。在Windows 7计算机上的家里,字符串甚至比在工作中的Windows 8.1系统上的字符串还要短。我知道运行有关样式的脚本时,ISE和PowerShell之间存在一些差异。但是较短的弦...嗯。
现在是问题。在字符串长度限制方面,您有没有遇到过ISE和Powershell之间的区别?如果是这样。有没有人为我提供答案,我该如何编写脚本以确保不会出现不同的字符串结果?
答案 0 :(得分:0)
如果需要进一步处理数据,请不要使用Format-*
cmdlet。这些cmdlet仅 用于向用户显示数据。而是扩展对象Hash
返回的Get-FileHash
属性,如下所示:
$str_checksum_sha512 = (Get-FileHash -Algorithm SHA512 -Path $str_filepath).Hash
或类似这样:
$str_checksum_sha512 = Get-FileHash -Algorithm SHA512 -Path $str_filepath |
Select-Object -Expand Hash