我對以下代碼做錯了什么:如果是,請,我該如何解決?
$currentDir = Get-Location
$output = Write-Host "$currentDir\computedMD5.txt"
Get-FileHash $currentDir\* -Algorithm MD5 | Format-List | Out-File -FilePath $output
uj5u.com熱心網友回復:
當嘗試相同的代碼(當然調整到我的檔案夾)時,我收到一個關于目標檔案無法讀取的錯誤。
然后我嘗試將主要操作封裝在括號中,一切都很好而且花花公子:
( Get-FileHash * | Format-List ) | Out-File t.txt -Force
我不是 PS 管道方面的專家,但我懷疑問題類似于賽車條件,即在計算檔案哈希之前打開目標檔案。使用括號時,首先運行里面的代碼,然后將結果輸出到管道。
雖然,我只能猜測這是一個解決方案,因為問題中沒有錯誤可以指導我們了解您實際發生的事情。
uj5u.com熱心網友回復:
只是一個猜測,因為你沒有解釋你到底想做什么,但不管你把事情復雜化了:
$currentDir = Get-Location
Get-FileHash "$currentDir\*" -Algorithm MD5 | Out-File -FilePath "$currentDir\computedMD5.txt"
除非您專門為多個匹配項撰寫代碼,否則使用通配符作為輸入可能不是一個好主意。因此,如果您有多個檔案,更好的方法如下:
$currentDir = Get-Location
Get-ChildItem -Path $currentDir | ForEach-Object {
Get-FileHash $_.FullName -Algorithm MD5 | Out-File -FilePath ($_.FullName "_computedMD5.txt")
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/418472.html
標籤:
上一篇:如何期望Ansible任務失敗?
下一篇:Set-Content-Value引數將管道物件視為ValueFromPipeline(并將其轉換為字串),即使物件具有名為Value的字串屬性
