Изменить цвет вывода узла записи на основе результата foreach, если elseif в Powershell

Я пытаюсь изменить цвет вывода записи-хоста на основе свойства lastrunoutcome заданий SQL Server в Powershell.... как в... если задание было выполнено успешно, вывод lastrunoutcome - "Успех" зеленого цвета. ...если не удалось, то «Не удалось» красным цветом. У меня работает скрипт, чтобы получить желаемый статус работы... Я просто не знаю, как изменить цвета.

Вот что у меня есть до сих пор:

# Check for failed SQL jobs on multiple servers

[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | out-null

foreach ($svr in get-content "C:\serverlist2.txt")

{
   $a = get-date
   $BegDate = (Get-Date $a.AddDays(-1) -f d) + " 12:00:00 AM"
   $BegDateTrans = [system.datetime]$BegDate

   write-host $svr

   $srv=New-Object "Microsoft.SqlServer.Management.Smo.Server" "$svr"

   $srv.jobserver.jobs | where-object {$_.lastrundate -ge $BegDateTrans -and $_.Name -notlike "????????-????-????-????-????????????"} | format-table name,lastrunoutcome,lastrundate -autosize
foreach ($_.lastrunoutcome in $srv.jobserver.jobs)
{
   if ($_.lastrunoutcome = 0)
      {
      -forgroundcolor red
      }
   else
   {}
   }
}

Кажется, это самое близкое, что я получил ... но это дает мне ошибку ««LastRunOutcome» является свойством только для чтения».

Любая помощь будет принята с благодарностью!

Спасибо!

Эмо


person Emo    schedule 26.04.2010    source источник


Ответы (2)


if ($_.lastrunoutcome = 0)

похоже на ошибку; должен использоваться оператор "-eq", а не "=". Это:

if ($_.lastrunoutcome -eq 0)
person Roman Kuzmin    schedule 26.04.2010
comment
Если я изменю код с = на -eq, я просто получаю сообщение об ошибке. Термин «-forgroundcolor» не распознается как имя командлета, функции, файла сценария или работающей программы. - person Emo; 26.04.2010
comment
Я знаю, что -eq - это сравнительный аргумент, который здесь не работает. - person Emo; 26.04.2010
comment
Ну... черт... я не знаю... игнорируйте мои последние два комментария LOL! - person Emo; 27.04.2010

Параметры "Splat" позволяют передавать хэш пар "имя-значение" функции или командлету. Этот хеш может быть создан постепенно...

$extraArgs = @{}
if ($thingsFailed) {
  $extraArgs["foregroundColor"] = "Red"
}

write-host "Message" @extraArgs

Если хэш пуст, ничего не будет добавлено, но если установлено $thingsFailed, вывод будет красным.

person Richard    schedule 26.04.2010