簡體   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