0

我对 Powershell 非常陌生,并且有少量的 Linux bash 脚本编写经验。我一直在寻找一种方法来获取服务器上具有社会安全号码的文件列表。我在研究中发现了这一点,它的表现完全符合我在家用电脑上测试时的要求,只是它没有从我的工作和 Excel 测试文档中返回结果。有没有办法使用 PowerShell 命令从各种办公文档中获取结果?该服务器几乎是所有 Word 和 excel 文件以及一些 PowerPoint。

PS C:\Users\Stephen> Get-ChildItem -Path C:\Users -Recurse -Exclude *.exe, *.dll | `
Select-String "\d{3}[-| ]\d{2}[-| ]\d{4}"

Documents\SSN:1:222-33-2345
Documents\SSN:2:111-22-1234
Documents\SSN:3:111 11 1234

PS C:\Users\Stephen> Get-childitem  -rec | ?{ findstr.exe /mprc:. $_.FullName } | `
select-string "[0-9]{3}[-| ][0-9]{2}[-| ][0-9]{4}"

Documents\SSN:1:222-33-2345
Documents\SSN:2:111-22-1234
Documents\SSN:3:111 11 1234

4

2 回答 2

1

有没有办法使用 PowerShell 命令从各种办公文档中获取结果?该服务器几乎是所有 Word 和 excel 文件以及一些 PowerPoint。

在与 MS Office 文件交互时,最好的方法是使用 COM 接口来获取您需要的信息。

如果您是 Powershell 的新手,COM 对您来说肯定是一个学习曲线,因为 Internet 上几乎没有“初学者”文档。

因此,我强烈建议从小处着手:

  • 首先专注于打开单个Word 文档并将内容读入字符串。
  • 准备好后,专注于提取相关信息(Powershell Match 运算符非常有用
  • 一旦您能够使用单个 Word 文档,请尝试在文件夹中找到所有名为 *.docx 的文件,然后对它们重复您的过程:foreach ($file in (ls *.docx)) { # work on $file }

这是一些阅读材料(诚然,所有这些都是针对 Excel 的,因为我构建了自动化的 Excel 图表工具,但是这些课程对于自动化任何 Office 应用程序都非常有帮助)

于 2013-12-06T07:00:02.597 回答
0

当您只想将其限制为 docx 和 xlsx 时,您可能还需要考虑简单解压缩,然后搜索内容,忽略任何 XML 标记(因此在每个数字之间允许一个或多个 XML 元素)。

于 2013-12-07T11:22:17.283 回答