Действительно ли возможно завершить или остановить конвейер PowerShell из фильтра

Объект response не имеет свойства ok. ok является строковым значением свойства response, поэтому ваша логика должна быть такой:

if (response.response != 'ok') {
  // your logic...
}

Однако у вас возникнет та же проблема с response.json(). нет никаких логических предположений, которые я могу сделать для того, что вы ожидаете, чтобы получить результат на изображениях, которые вы показали.

10
задан Dan Finucane 10 November 2008 в 17:20
поделиться

4 ответа

Не уверенный в Ваших точных потребностях, но это может стоить Вашего времени для рассмотрения Синтаксического анализатора Журнала, чтобы видеть, не можете ли Вы использовать запрос для фильтрации данных, прежде чем это даже поразит канал.

2
ответ дан 3 December 2019 в 22:02
поделиться

Не возможно остановить восходящую команду от нисходящей команды.. это продолжит отфильтровывать объекты, которые не соответствуют Вашим критериям, но первая команда обработает все, что это было установлено обработать.

Обходное решение должно будет сделать больше фильтрации на восходящем потоке cmdlet или функции/фильтре. Работа с файлами журнала делает это немного большим количеством comoplicated, но возможно использование Избранной Строки и регулярного выражения для отфильтровывания нежелательных дат могло бы работать на Вас.

Если Вы не знаете, сколько строк Вы хотите проводить и от того, где, целый файл будет считан для проверки на шаблон.

3
ответ дан 3 December 2019 в 22:02
поделиться

Другая опция состояла бы в том, чтобы использовать -file параметр на a switch оператор. Используя -file считает файл одна строка за один раз, и можно использовать break выйти сразу, не читая остальную часть файла.

switch -file $someFile {
  # Parse current line for later matches.
  { $script:line = [DateTime]$_ } { }
  # If less than min date, keep looking.
  { $line -lt $minDate } { Write-Host "skipping: $line"; continue }
  # If greater than max date, stop checking.
  { $line -gt $maxDate } { Write-Host "stopping: $line"; break }
  # Otherwise, date is between min and max.
  default { Write-Host "match: $line" }
}
0
ответ дан 3 December 2019 в 22:02
поделиться

Попробуйте эти фильтры, они вынудят конвейер остановиться после первого объекта - или первых n элементов - и сохранить его - их в переменной; необходимо передать название переменной, если Вы не делаете объект (объекты) выставлен, но не может быть присвоен переменной.

filter FirstObject ([string]$vName = '') {
 if ($vName) {sv $vName $_ -s 1} else {$_}
 break
}

filter FirstElements ([int]$max = 2, [string]$vName = '') {
 if ($max -le 0) {break} else {$_arr += ,$_}
 if (!--$max) {
  if ($vName) {sv $vName $_arr -s 1} else {$_arr}
  break
 }
}

# can't assign to a variable directly
$myLog = get-eventLog security | ... | firstObject

# pass the the varName
get-eventLog security | ... | firstObject myLog
$myLog

# can't assign to a variable directly
$myLogs = get-eventLog security | ... | firstElements 3

# pass the number of elements and the varName
get-eventLog security | ... | firstElements 3 myLogs
$myLogs

####################################

get-eventLog security | % {
 if ($_.timegenerated -lt (date 11.09.08) -and`
  $_.timegenerated -gt (date 11.01.08)) {$log1 = $_; break}
}

#
$log1
1
ответ дан 3 December 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: