powershell - 在 PowerShell 中枚举文件属性

标签 powershell powershell-2.0

我已经在其他问题中看到了一些这样的东西,但我正在寻找一种通用的方法来编写一个函数,该函数将接受一个文件,并以可以使用的方式列出其属性。我知道名为 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/

相关文章:

powershell - 从客户端计算机修改 Active Directory 客户端 OU

powershell - 搜索文件中的某些字符串,而无需两次遍历内容

powershell - 如何关闭所有窗口

powershell - 尝试,catch 似乎不起作用

powershell - 有什么方法可以通过 powershell 从 Azure 文件(不是 blob)共享下载文件

arrays - Powershell - 组合数组

powershell - 如何在powershell中将字符串转换为表格或对象

powershell - 将事件日志写入文件,powershell

python - 是否可以从 cPython 运行 PowerShell 和 Active Directory 命令?

powershell - 如何使用 Get-ChildItem 仅获取目录?