You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell获取Office文件的Company属性

获取Office文件的Owner和Company属性(PowerShell实现)

你可以通过PowerShell获取Windows文件属性详情栏中的Company属性,以下是具体实现方案:

一、整合Owner与Company属性的完整脚本

方法1:利用Shell.Application COM对象(兼容性好)

该方法通过Windows Shell组件读取文件的详细属性,能稳定获取Office文件的Company信息:

Get-ChildItem -Filter *.docx,*.doc,*.xlsx,*.xls,*.pptx,*.ppt | ForEach-Object {
    $shell = New-Object -ComObject Shell.Application
    $folder = $shell.Namespace($_.DirectoryName)
    $file = $folder.ParseName($_.Name)
    # 获取Company属性(索引33为常见系统的Company属性标识,若无效可按下方方法查找对应索引)
    $company = $folder.GetDetailsOf($file, 33)
    
    # 输出整合后的属性
    [PSCustomObject]@{
        FullName = $_.FullName
        Owner    = $_.GetAccessControl().Owner
        Company  = $company
    }

    # 释放COM对象,避免内存泄漏
    [System.Runtime.Interopservices.Marshal]::ReleaseComObject($shell) | Out-Null
}

查找Company属性的正确索引

如果上述脚本中索引33无法获取到Company信息,可先执行以下命令查找当前系统中Company属性对应的索引值:

$shell = New-Object -ComObject Shell.Application
$testFolder = $shell.Namespace("C:\你要测试的文件所在目录路径")
for ($i=0; $i -le 299; $i++) {
    $propName = $testFolder.GetDetailsOf($testFolder.Items(), $i)
    if ($propName -eq "Company") {
        Write-Host "当前系统Company属性索引: $i"
        break
    }
}

方法2:直接读取文件扩展属性

部分系统可通过ExtendedProperties直接获取,代码更简洁:

Get-ChildItem -Filter *.docx,*.doc,*.xlsx,*.xls,*.pptx,*.ppt | Select-Object FullName,
    @{Name='Owner'; Expression={$_.GetAccessControl().Owner}},
    @{Name='Company'; Expression={$_.ExtendedProperties["System.Company"]}}

内容的提问来源于stack exchange,提问作者Rasec Malkic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 13:12:41