1

I'm new to powershell so I don't know where to start. I want a script that searches in all (pdf, word, excell, powerpoint, ...) file content for a specific string combination.

I tried this script but it doesn't work:

function WordSearch ($sample, $staining, $sampleID, $patientID, $folder)
{
$objConnection = New-Object -com ADODB.Connection
$objRecordSet = New-Object -com ADODB.Recordset
$objConnection.Open(“Provider=Search.CollatorDSO;Extended Properties=’Application=Windows’;”)
$objRecordSet.Open(“SELECT System.ItemPathDisplay FROM SYSTEMINDEX WHERE ((Contains(Contents,’$sample’)) or (Contains(Contents,’$sampleID’) and Contains(Contents,’$staining’)) or (Contains(Contents,’$staining’) and Contains(Contents,’$patientID’))) AND System.ItemPathDisplay LIKE ‘$folder\%’”, $objConnection)
if ($objRecordSet.EOF -eq $false) {$objRecordSet.MoveFirst() }

while ($objRecordset.EOF -ne $true) {
$objRecordset.Fields.Item(“System.ItemPathDisplay”).Value
$objRecordset.MoveNext()
}
}

Can someone help me?

4

1 回答 1

0

你应该试试这个,但首先确保你在你想要开始搜索的文件夹中:(如果你试图搜索你的整个计算机,从 C:\ 开始,但我想脚本将需要相当长的时间来运行.

$Paths = @()    
$Paths = gci . *.* -rec | where { ! $_.PSIsContainer } |? {($_.Extension -eq ".doc") -or ($_.Extension -eq ".ppt") -or ($_.Extension -eq ".pdf") -or ($_.Extension -eq ".xls")} | resolve-path

这将检索这些文件类型的所有文件路径。如果您有 Microsoft Office 2007 或更高版本,您可能需要添加搜索“.xlsx”或“.docx”或“.pptx”

然后您可以开始查看这些文件中的“特定字符串组合

array = @()
foreach($path in $Paths)
{$array += Select-String -Path $Path -Pattern "Search String"}

这将为您提供该字符串在这些文件中存在的所有行和路径。由于微软加密了他们的文件,你得到的实际行输出可能有点失真。用于 $array | get-member -MemberType Property查找可以索引到的项目以及Select-object将这些项目拉出的命令行开关。

于 2012-07-19T16:33:03.217 回答