2012-07-19 3 views
1

PowerShell을 처음 사용하므로 어디서부터 시작해야할지 모르겠습니다. 특정 문자열 조합에 대한 모든 파일 내용 (pdf, word, excell, powerpoint, ...)을 검색하는 스크립트가 필요합니다. Powershell : 파일 내용 검색 및 텍스트 파일에 결과 쓰기

나는이 스크립트를 시도했지만 작동하지 않습니다 :

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

왜'select-string'을 사용하지 않습니까? –

+0

@ C.B. 이 기능은 텍스트 파일에서 제대로 작동하기 때문에 .doc 또는 특히 .docx 내에서 검색하려는 경우 작동하지 않습니다. –

답변

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 

이 그 파일 형식의 모든 파일 경로를 검색합니다. 당신이 마이크로 소프트 오피스 2007 또는 이상이있는 경우 ".XLSX"또는 ".DOCX"또는 "에 대한 검색을 추가 할 수 있습니다 .pptx "

그런 다음 특정 문자열 조합에 해당하는 파일을 검색 할 수 있습니다.

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

이렇게하면 해당 파일에 해당 문자열이있는 모든 행과 경로가 제공됩니다. 당신이 얻는 실제 라인 출력은 마이크로 소프트가 파일을 암호화하기 때문에 약간 왜곡 될 수 있습니다. $array | get-member -MemberType Property을 사용하여 색인을 생성 할 수있는 항목을 찾고 Select-object 명령을 사용하여 해당 항목을 꺼내십시오.

+0

이것은 텍스트 파일, xls 등등에서 잘 작동하지만 ... docx에서 이것을 사용하면 작동하지 않을 것입니다. –

+0

왜 안 되니? 텍스트 편집기로 docx 파일을 본 적이 있습니까? 모든 텍스트는 여전히 파일에 있습니다. 마법의 장소가 아닙니다. Docx는 서식, 그림 등을위한 많은 추가 메타 데이터를 가지고 있습니다. 그러나 모든 텍스트는 여전히 검색 가능합니다. 시도 해봐. – Cole9350

+0

당신의 말은 내 시스템에서 .doc의 진실입니다. 원래의 텍스트가 다른 모든 기호와 쓰레기와 섞여있는 것을 볼 수는 있지만 이것은 .docx 파일에는 해당되지 않습니다. –

관련 문제