如上一個問題中所述,我希望在目錄中擁有檔案串列的名稱和檔案版本。
到現在為止,多虧了Theo,我已經有了這個:
$result =
Get-ChildItem -Path 'X:\path with spaces' |
Where-Object {$_.Extension -match '\.(dll|exe)'} |
Select-Object Name,
@{Name = 'FileVersion';
Expression = {$_.VersionInfo.FileVersion}}
現在我想將校驗和添加到其中。
為了實作這一點,這是我嘗試過的:
$result =
Get-ChildItem -Path 'X:\path with spaces' |
Where-Object {$_.Extension -match '\.(dll|exe)'} |
Select-Object Name,
@{Name = 'FileVersion';
Expression = {$_.VersionInfo.FileVersion}},
@{Name = 'CheckSum';
Expression = {Get-FileHash($_).Hash}}
所以,基本上,我添加了另一個帶有名稱和運算式的“東西”,我試圖添加它(以防這看起來很荒謬:這是我的第一個 Powershell 日:-))。
這不起作用,但沒有錯誤訊息:就好像校驗和的問題甚至不存在一樣。
有誰知道我該如何解決這個問題?
提前致謝
uj5u.com熱心網友回復:
您的代碼實際上給出了錯誤,但是運算式腳本塊中的錯誤被悄悄地忽略了。請參閱官方檔案的注釋。
PS /> @{} | Select-Object @{Name = 'Something'; Expression = { throw }}
Something
---------
如果您檢查您的$Error自動變數,您可能會看到如下內容:
PS /> $Error[0]
Get-FileHash: Cannot bind argument to parameter 'Path' because it is null.
正確的表達方式應該是:
Expression = {(Get-FileHash $_.FullName).Hash}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/434557.html
