скрипт powershell для поиска точной строки в файлах - PullRequest
0 голосов
/ 31 января 2019

Я хочу выполнить поиск в моих файлах развертывания, которые имеют текст ниже.Любая помощь очень ценится.

"E: \ abc.net-Batch \ test2"

Я пробовал это, но пока не повезло ..

$Path = "\\servername\Test"
$Text = "E:\abc.net-Batch\test2"
$PathArray = @()
$Results = "C:\powershellscripts\test.txt"


# This code snippet gets all the files in $Path that end in ".txt".
Get-ChildItem $Path -Filter "*.bat" |
Where-Object { $_.Attributes -ne "Directory"} |
ForEach-Object {
If (Get-Content $_.FullName | Select-String -Pattern $Text) {
$PathArray += $_.FullName
$PathArray += $_.FullName
}
}
Write-Host "Contents of ArrayPath:"
$PathArray | ForEach-Object {$_}

Read-Host -Prompt "Press enter to exit"

1 Ответ

0 голосов
/ 31 января 2019

Select-String по умолчанию возвращает свойства Path:LineNumber:Line,
, поэтому используйте Select-Object, чтобы использовать только путь, и добавьте параметр -Unique, чтобы исключить дубликаты.
Вы можете напрямую передать Get-ChildItem выходные данныена Select-String и Select-Object

## Q:\Test\2019\01\31\SO_54456644.ps1
$Path = "\\servername\Test"
$Text = [RegEx]::Escape("E:\abc.net-Batch\test2")
$Results = "C:\powershellscripts\test.txt"

$PathArray = Get-ChildItem $Path -Filter "*.bat" -File |
               Select-String -Pattern $Text -SimpleMatch |
                 Select-Object -Property Path -Unique

$PathArray

Read-Host -Prompt "Press enter to exit"

Вы должны выбрать один из вариантов либо escape или , использовать -SimpleMatch
не одновременно вто же время, что и в приведенном выше сценарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...