使用Powershell在Word和Excel文档中查找SSN

时间:2013-12-06 03:40:59

标签: excel powershell ms-word .doc pii

我非常喜欢Powershell并拥有少量的Linux bash脚本编写经验。我一直在寻找一种方法来获取服务器上具有社会安全号码的文件列表。我在我的研究中发现了这一点,它在我的家用电脑上进行测试时完全按照我想要的方式执行,除了它没有返回我的工作和excel测试文档的结果。有没有办法使用PowerShell命令从各种office文档中获取结果?这个服务器几乎都是带有少量PowerPoints的Word和excel文件。

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

文档\ SSN:1:222-33-2345
  文档\ SSN:2:111-22-1234
  文件\ 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}"
  

文档\ SSN:1:222-33-2345
  文档\ SSN:2:111-22-1234
  文件\ SSN:3:111 11 1234

2 个答案:

答案 0 :(得分:1)

  

有没有办法使用PowerShell命令从各种办公文档中获取结果?这个服务器几乎都是带有少量PowerPoints的Word和excel文件。

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

如果您是Powershell的新手,COM对您来说肯定会有一些学习曲线,因为互联网上存在非常少的“初学者”文档。

因此,我强烈建议从小开始:

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

这里有一些阅读(诚然,所有这些都是针对Excel构建自动Excel图表工具,但课程对于自动化任何Office应用程序非常有用)

答案 1 :(得分:0)

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