PowerShell:Get-ChildItem FullName 输出到 Get-FileHash 路径

问题描述 投票:0回答:1

对于 PowerShell 新手,我正在尝试创建一个执行以下操作的命令:

  • 在整个目录中搜索特定文件

  • 使用 Get-ChildItem 中的文件路径作为 Get-FileHash“-Path”的变量

  • 列出文件的 FullName、Attributes、LastWriteTime、CreationTime、LastAccessTime、$Hash($Hash = Get-FileHash 的输出)

到目前为止我创建的内容(不起作用):

$ErrorActionPreference = "SilentlyContinue"; $Path = Get-ChildItem -Recurse -Path C:\ -Force -Filter screenshot_37.png | Select FullName; $Hash = Get-FileHash $Path -Alogorithm MD5 | Select Hash; Get-ChildItem -Recurse -Path C:\ -Force -Filter screenshot_37.png | Select FullName, Attributes, LastWriteTime, CreationTime, LastAccessTime, $Hash

按原样工作:

$ErrorActionPreference = "SilentlyContinue"; Get-ChildItem -Recurse -Path C:\ -Force -Filter screenshot_37.png | Select FullName, Attributes, LastWriteTime, CreationTime, LastAccessTime
Get-FileHash C:\Users\ME\Downloads\screenshot_37.png -Alogorithm MD5 | Select Hash

($ErrorActionPreference = "SilentlyContinue" 存在,因为用户没有管理员权限,因此搜索 C:\ 驱动器会产生大量访问被拒绝的错误)

有人可以帮助我理解并创建所需的工作命令吗?

windows powershell command
1个回答
0
投票

无需调用

Get-ChildItem
两次 - 相反,请将
Get-FileHash
的输出附加到原始文件项:

Get-ChildItem -Recurse -Path C:\ -Force -Filter screenshot_37.png |Select-Object FullName, Attributes, LastWriteTime, CreationTime, LastAccessTime, @{Name='Hash';Expression = { $_ |Get-FileHash -Alogorithm MD5 |ForEach-Object Hash }}

传递给

Select-Object
(
@{Name='Hash';Expression = { $_ |Get-FileHash -Alogorithm MD5 |ForEach-Object Hash }}
) 的最后一个参数是一个 计算属性表,它允许您根据现有输入对象合成新属性。

您可以在

about_Calculated_Properties
帮助主题

中阅读有关计算属性的更多信息
© www.soinside.com 2019 - 2024. All rights reserved.