我非常喜欢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
答案 0 :(得分:1)
有没有办法使用PowerShell命令从各种办公文档中获取结果?这个服务器几乎都是带有少量PowerPoints的Word和excel文件。
与MS Office文件交互时,最好的方法是使用COM接口来获取所需的信息。
如果您是Powershell的新手,COM对您来说肯定会有一些学习曲线,因为互联网上存在非常少的“初学者”文档。
因此,我强烈建议从小开始:
foreach ($file in (ls *.docx)) { # work on $file }
这里有一些阅读(诚然,所有这些都是针对Excel构建自动Excel图表工具,但课程对于自动化任何Office应用程序非常有用)
来自已删除链接的有用文档(链接指向该文档的Google缓存) - http://dev.donet.com/automating-excel-spreadsheets-with-powershell
在PS中使用“对象”的简介 - CodeProject
答案 1 :(得分:0)
如果您只想将其限制为docx和xlsx,您可能还需要考虑简单解压缩然后搜索内容,忽略任何XML标记(因此在每个数字之间允许一个或多个XML元素)。