我是PowerShell的新手,所以我不知道从哪里开始。我想要一个脚本,在所有(pdf,word,excell,powerpoint,...)文件内容中搜索特定的字符串组合。
我尝试过这个脚本,但它不起作用:
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()
}
}
有人可以帮助我吗?
答案 0 :(得分: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
命令行开关来提取这些项目。