使用Get-FileMetaData提取MP4文件资源管理器注释遇参数错误求助
解决Get-FileMetaData参数错误及提取MP4文件注释的方法
一、修复当前命令的参数错误
你遇到的-folder参数不存在的问题,是因为FC_SysAdmin模块里的Get-FileMetaData命令的正确参数并非folder,而是Path。可以先通过以下命令查看该命令的完整参数和用法:
Get-Help Get-FileMetaData -Full
修改后的可用命令如下:
Get-FileMetaData -Path "C:\pics" | Select-Object 'Name', 'Path', 'Comments' | Sort-Object Name | Export-CSV "C:\pics\textfile.csv" -Encoding Utf8 -NoTypeInformation
二、替代方案:直接提取文件扩展属性(更可靠)
如果上述模块仍无法正常获取MP4的注释字段,可以使用PowerShell调用Windows Shell对象提取文件扩展属性,无需额外安装模块:
$folderPath = "C:\pics" $shell = New-Object -ComObject Shell.Application $folder = $shell.Namespace($folderPath) $results = foreach ($file in $folder.Items()) { if ($file.Path -like "*.mp4") { [PSCustomObject]@{ Name = $file.Name Path = $file.Path Comments = $folder.GetDetailsOf($file, 14) # 14是注释字段的默认索引,若无效可尝试15或其他数值 } } } $results | Sort-Object Name | Export-CSV "C:\pics\textfile.csv" -Encoding Utf8 -NoTypeInformation
使用该方法的补充说明:
- 若注释字段索引14无效,可通过以下命令遍历所有属性索引,找到对应注释的正确编号:
for ($i=0; $i -le 287; $i++) { Write-Host "$i : $($folder.GetDetailsOf($folder.Items(), $i))" } - 执行完脚本后,建议释放COM对象避免资源占用:
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($shell) | Out-Null
内容的提问来源于stack exchange,提问作者Nobody
相关产品推荐
相关产品推荐

