繁体   English   中英

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

[英]String Length different when using ISE or Powershell.exe

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

如果您需要进一步处理数据, Format-*不要使用Format-* cmdlet。 这些cmdlet 用于向用户显示数据。 而是扩展对象Get-FileHash返回的Hash属性,如下所示:

$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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM