使用ISE或Powershell.exe时的字符串长度不同

时间:2018-09-03 12:54:36

标签: string powershell

我用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之间的区别?如果是这样。有没有人为我提供答案,我该如何编写脚本以确保不会出现不同的字符串结果?

1 个答案:

答案 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
相关问题