剛了解Powershell,找了24多小時,看了很多文章,還是沒有找到解決以下問題的方法(因為我不聰明),希望有人能幫忙.
1. 如何去除格式串列輸出中的空行?
我撰寫了以下代碼來檢查檔案的哈希:
powershell -noexit Write-Host '%1';get-filehash -literalpath '%1' -algorithm MD5 | format-list -property algorithm, hash; get-filehash -literalpath '%1' -algorithm SHA1 | format-list -property algorithm, hash
以下結果
D:\Downloads\new 1.txt
Algorithm : MD5
Hash : B1D91A5CB33FDCD3CF24964769E23BDA
Algorithm : SHA1
Hash : 748B44A79C7FA38898C0248DE6D1B102A71B36D3
兩個結果之間有 5 個空白行,我怎樣才能將其縮短為 1 行?
我也嘗試過像這樣使用 select-object,結果很好,但是對于像 SHA512 這樣的哈希函式,它沒有顯示完整的范圍,而是在末尾有“...”標記。
powershell -noexit Write-Host '%1';get-filehash -literalpath '%1' -algorithm MD5 | select-object -property algorithm, hash;get-filehash -literalpath '%1' -algorithm SHA1 | select-object -property algorithm, hash;get-filehash -literalpath '%1' -algorithm SHA256| select-object -property algorithm, hash
請注意:
- 我需要一行代碼才能添加到注冊表中。
- 我在這里看到了答案,但這對我來說太復雜了。我不知道如何將其合并到我的代碼中:在簡單的 Format-list 命令后洗掉空行
2. 如何并發:在Powershell中顯示結果,復制到剪貼板,輸出txt檔案?
如果我在格式串列之后使用“|剪輯”,它就不起作用。
powershell -noexit Write-Host '%1';get-filehash -literalpath '%1' -algorithm MD5 | format-list -property algorithm, hash;get-filehash -literalpath '%1' -algorithm SHA1 | format-list -property algorithm, hash | clip
3.輸出檔案
我無法將檔案輸出到 C 驅動器(或者有人知道其他方式嗎?),那么 Powershell 如何將檔案輸出到另一個可用驅動器?例如,您的 D 盤被鎖定,Powershell 將識別該驅動器并將檔案輸出到 E 盤。
或者有沒有辦法打開記事本并自動將結果粘貼到那里,然后您可以選擇是否保存檔案?
非常感謝您提供的所有幫助。
uj5u.com熱心網友回復:
如果您想要的只是一種將演算法和哈希輸出到單行的“單線”,那么這樣的事情將起作用[笑] ...
編碼 ...
Get-ChildItem -LiteralPath $env:TEMP -Filter '*.log' -File | Get-FileHash -Algorithm MD5 | ForEach-Object {'Algo = {0}; Hash = {1}' -f $_.Algorithm, $_.Hash}
它能做什么 ...
- 抓取要使用的
檔案我從我的臨時目錄中選擇了日志檔案。 Get-FileHash用所需的演算法將每個管道連接到- 管道到
ForEach-Object -f使用字串格式運算子構建一個字串- 將其發送到螢屏上
,您可以根據需要將其發送到其他地方。
輸出 ...
Algo = MD5; Hash = B8D9CD8AEAC35E8C018A9F612196D2F7
Algo = MD5; Hash = 4FF28D9F2ABAC624DC04EA690B613509
Algo = MD5; Hash = FC738758B9ECA9E36BB15C8AEA592BEC
Algo = MD5; Hash = 1C480823E74B761DF4BEE1A5684ACD80
Algo = MD5; Hash = 23088A1A7FB398B077DF7CB52F9925DD
Algo = MD5; Hash = 8679AAAC06D4EE1E80E28C356E650189
Algo = MD5; Hash = 42AB574F9F8D5735E81A0164F1942C20
Algo = MD5; Hash = 36D72201A2B33DC2103B9CEA62502CCF
Algo = MD5; Hash = 730770FAC0461041C756DF7BB500729A
Algo = MD5; Hash = E388F1B0827265FE5BB2DB888A6737A1
Algo = MD5; Hash = 3CFA940E581F8945F7863F4F0DE6F5D9
Algo = MD5; Hash = 8B7BD3ADA2BBF862A486D557BF96A770
Algo = MD5; Hash = 5C7DE92E6914A7FF41A70C30313C2740
我有點困惑,你不想要檔案名。
uj5u.com熱心網友回復:
您可以使用它Tee-Object來輸出到檔案,然后回傳到管道中。除此之外,這是我對此的看法:
PowerShell.exe -Command "
'MD5','SHA1','SHA256','SHA512' |
Foreach-Object { Get-FileHash -LiteralPath 'C:\Users\Abraham\Desktop\atari\cleanmem\New Text Document.txt' -Algorithm `$_ } |
Select-Object -Property 'algorithm', 'hash' |
Tee-Object -FilePath 'C:\Temp\temp.txt' | Format-List -Property * | clip; Get-Clipboard"
在這種情況下,我更喜歡使用Clip.exe而不是Set-Clipboard將字串作為一個整體而不是作為物件發送;這將導致剪貼板中的哈希表集,而Clip不會。最后,設定到剪貼板后,您可以使用Get-Clipboard. 這導致:
Algorithm : MD5
Hash : D41D8CD98F00B204E9800998ECF8427E
Algorithm : SHA1
Hash : DA39A3EE5E6B4B0D3255BFEF95601890AFD80709
Algorithm : SHA256
Hash : E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855
Algorithm : SHA512
Hash : CF83E1357EEFB8BDF1542850D66D8007D620E4050B5715DC83F4A921D36CE9CE47D0D13C5D85F2B0FF8318D2877EEC2F63B931BD474
17A81A538327AF927DA3E
uj5u.com熱心網友回復:
#just simple foreach
Gci -File C:\Temp.txt | % { Get-FileHash $_.Fullname -Algorithm MD5; Get-FileHash $_.Fullname -Algorithm SHA1}
#object using select object
$Path = Get-ChildItem C:\Temp
foreach ($i in $Path){
"" | Select-Object @{name='FileName';Expression={($i.FullName)}},
@{Name='MD5';Expression={(Get-FileHash $i.FullName -Algorithm MD5).Hash}},
@{Name='SHA1';Expression={(Get-FileHash $i.FullName -Algorithm SHA1).Hash}}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/462227.html
下一篇:獲取串列中每個字串的第一個字符
