我已经在其他问题中看到了一些这样的东西,但我正在寻找一种通用的方法来编写一个函数,该函数将接受一个文件,并以可以使用的方式列出其属性。我知道名为 Get-ItemProperty
的函数但它没有列出我正在寻找的属性(例如,给定一个 .avi 文件,它不会告诉我长度、框架宽度等)。
我是否使用了错误的函数(我所做的只是: Get-ItemProperty file
)还是我必须以不同的方式执行此操作?
我希望能够对任意属性说类似 $a += $file.Length 或类似的内容。
最佳答案
听起来您正在寻找扩展文件属性。这些不存储在 System.IO.FileInfo
.
一种方法是使用 Shell.Application
COM 对象。下面是一些示例代码:
http://web.archive.org/web/20160201231836/http://powershell.com/cs/blogs/tobias/archive/2011/01/07/organizing-videos-and-music.aspx
假设您有一个视频文件:C:\video.wmv
$path = 'C:\video.wmv'
$shell = New-Object -COMObject Shell.Application
$folder = Split-Path $path
$file = Split-Path $path -Leaf
$shellfolder = $shell.Namespace($folder)
$shellfile = $shellfolder.ParseName($file)
您需要知道扩展属性的 ID 是什么。这将向您显示所有 ID:
0..287 | Foreach-Object { '{0} = {1}' -f $_, $shellfolder.GetDetailsOf($null, $_) }
一旦你找到你想要的,你就可以像这样访问它:
$shellfolder.GetDetailsOf($shellfile, 216)
关于powershell - 在 PowerShell 中枚举文件属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9420055/