簡體   English   中英

從批處理文件運行時,PowerShell 中的 Get-Filehash SHA256 加密會刪除最后 4 位數字

[英]Get-Filehash SHA256 encryption in powershell drops last 4 digits when run from a batch file

但是,當我從 powershell 運行 Get-Filehash 時,它可以工作:

當我從批處理文件運行它時,它會刪除最后 4 位數字。

powershell.exe -NoProfile -ExecutionPolicy -Command "Get-FileHash filename.edi -Algorithm SHA256 | Out-File c:\app\testfileout.txt"
 Algorithm Hash --------- ---- SHA256 3EFEC59BFB0573061C5CD2F72A684663B60CA3D0D91C67CBDBBE366A59FE...

如何讓輸出文件僅是:

 3EFEC59BFB0573061C5CD2F72A684663B60CA3D0D91C67CBDBBE366A59FE4A8F

當我運行此命令時,它為我提供了 Powershell 中的完整哈希值:

Get-FileHash filename.edi -Algorithm SHA256 | Out-File c:\app\testfileout.txt

我只需要沒有標題的哈希值以及最后 4 位數字。

有沒有人有一個已經這樣做的腳本?

它返回一個對象,因此您需要做的就是使用 Select-Object 和 ExpandProperty:

powershell.exe -NoProfile -ExecutionPolicy -Command "Get-FileHash filename.edi -Algorithm SHA256 | Select-Object -ExpandProperty Hash | Out-File c:\app\testfileout.txt"

或通過點符號引用對象屬性:

powershell.exe -NoProfile -ExecutionPolicy -Command "(Get-FileHash filename.edi -Algorithm SHA256).Hash | Out-File c:\app\testfileout.txt"

使用純 ,您可以這樣做:

cmd /V /C for /F "tokens=*" %H in ('certutil -hashfile "filename.edi" SHA256 ^^^| find /V ":"') do @(set "HASH=%H" ^& echo !HASH: =!) > "C:\app\testfileout.txt"

,它可能如下所示:

setlocal EnableDelayedExpansion
for /F "tokens=*" %%H in ('
    certutil -hashfile "filename.edi" SHA256 ^| find /V ":"
') do @(
    set "HASH=%%H" & echo !HASH: =!
) > "C:\app\testfileout.txt"
endlocal

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM