1

私は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()
}
}

誰かが私を助けることができますか?

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"}

これにより、その文字列がそれらのファイルに存在するすべての行とパスが得られます。Microsoft がファイルを暗号化しているため、実際の行出力は少し歪んでいる可能性があります。$array | get-member -MemberType Propertyインデックスを作成できるアイテムを検索するために使用 し、Select-objectそれらのアイテムを引き出すコマンドレットを使用します。

于 2012-07-19T16:33:03.217 に答える