Powershell – поиск по CSV и возврат только строк с определенной ошибкой

Вопрос: Я пытаюсь написать сценарий powershell, который возвращает только строки, которые имеют определенную запись в одном из столбцов, но немного борется. CSV имеет 2 соответствующих столбца, идентификатор и ошибку. На данный момент у меня есть это: $ImportFile = Import-csv X:errorlist.csv $Error = $userobject.Error $ID = $userobject.ID $ErrorMessage1 = "Error1" foreach($test in $ImportFile) { $field1 =

Вопрос:

Я пытаюсь написать сценарий powershell, который возвращает только строки, которые имеют определенную запись в одном из столбцов, но немного борется. CSV имеет 2 соответствующих столбца, идентификатор и ошибку. На данный момент у меня есть это:

$ImportFile = Import-csv X:errorlist.csv $Error = $userobject.Error $ID = $userobject.ID $ErrorMessage1 = «Error1» foreach($test in $ImportFile) { $field1 = $test.Error $field2 = $test.ID Echo «$field1, $field2» } Where-Object {$_.Error -like $ErrorMessage1}

Однако эхо все еще возвращает все в csv даже с помощью Where-Object. Я пытаюсь запустить ForEach, потому что в конечном итоге, когда у меня есть эхо, я собираюсь вставить SQL-скрипт, который использует идентификационную информацию в csv для исправления определенных ошибок. Поэтому я думаю, что мне нужно, чтобы foreach обрабатывал каждый sql-скрипт по очереди, если у кого-то нет лучшей идеи?

Лучший ответ:

Отфильтруйте строки из CSV перед запуском SQL:

Import-Csv X:errorlist.csv | Where-Object { $_.Error -like $ErrorMessage } | ForEach-Object { # Don’t use aliases in scripts, use the real cmdlet names. Makes maintenance easier. Write-Host (‘{0}, {1}’ -f $_.Error,$_.ID) # Run your SQL cmd here. } Ответ №1

Попробуйте это, это проверит для $ ErrorMessage1 в столбцах ID или Error:

Import-csv X:errorlist.csv | Where-Object {$_.Error -like «*$ErrorMessage1*» -or $_.ID -like «*$ErrorMessage1*»} Ответ №2

Цикл foreach работает независимо от Where-object, поэтому все, что вы делаете, – это сброс содержимого файла CSV на консоль.

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

$ErrorMessage1 = «Error1» $allerrors = Import-csv X:errorlist.csv|where-object {$_.error -eq $ErrorMessage1} $allerrors;

Оцените статью
Добавить комментарий