string - 使用 ISE 或 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-*
如果您需要进一步处理数据,请不要使用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
推荐阅读
- sql - 变更数据捕获 - 监控单列
- qt - QNetworkReply 正在读取数据时,QMainWindow 关闭按钮处于非活动状态
- python - 如何在 Selenium Webdriver 上为 python 中的 chrome 设置 luminati 代理?
- swift - Swift:面向协议的方法期间出错。错误:无法将“I.Job”类型的返回表达式转换为“ActualJob”类型
- google-bigquery - 如何在 Google BigQuery 中的 CREATE OR REPLACE TABLE 之后立即执行 INSERT INTO 语句
- c# - 应用内购买验证使用购买令牌谷歌播放商店使用 C#
- c# - 注入具有与更高级别类相同的构造函数参数的依赖项
- ethereum - 在solidity中创建一个新的固定大小的数组
- python - 为什么我的精灵不动
- algorithm - 有人可以向我解释一下树遍历在这里做什么吗?