正如前面的问题中所解释的,我希望在目录中有一个文件列表的名称和文件版本。
直到现在,多亏了西奥,我已经有了这个:
$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日:-(
这不起作用,但没有错误消息:就好像校验和的问题根本不存在一样。
有人知道我该怎么解决吗
提前感谢
您的代码实际上给出了一个错误,但表达式脚本块中的错误被悄悄忽略。请参阅官方文档的注释。
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}