对于 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:\ 驱动器会产生大量访问被拒绝的错误)
有人可以帮助我理解并创建所需的工作命令吗?
无需调用
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
帮助主题中阅读有关计算属性的更多信息