Это концептуальный вопрос, который я только кратко обдумал. У меня есть идея, как я могу это сделать, но мне кажется, что это сложнее, чем я думаю.
Общей необходимостью является поиск в файле (например, может быть журнал ошибок), и я хочу найти в этом файле одно конкретное строковое значение. Однако в моем случае я подумал, что некоторые приложения выдают ошибку в одной строке, но строка, содержащая текст ошибки, может находиться в исходной или предшествующей строке этого журнала (например, журналы ошибок SQL Server). Поэтому в этом случае я мог бы захотеть включить найденную строку с конкретной строкой, предоставленной в поиске, но включить строку (или даже строки) до и после нее.
Я стараюсь сделать свои сценарии максимально простыми для удобства чтения другими пользователями, которые могут их использовать или найти. Я не могу думать в своей голове, это было бы легко написано.
РЕДАКТИРОВАТЬ
Основываясь на ответе, предоставленном с использованием Select-String
это пример того, что я пытаюсь сделать:
[void][System.Reflection.Assembly]::[LoadWithPartialName]('Microsoft.SqlServer.SMO')
$s = New-Object Microsoft.SqlServer.Management.Smo.Server MyServer
$s.EnumErrorLogs() | select -ExpandProperty Name |
foreach { $s.ReadErrorLog($_) | select-string -Pattern "*Serverity: 25*" -Context 3 -SimpleMatch |
select LogDate, ProcessInfo, Text