Измените выходной цвет узла записи на основе foreach, если еще результат в Powershell - PullRequest
2 голосов
/ 26 апреля 2010

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

Вот что у меня есть:

# 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" является свойством ReadOnly. "

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

Спасибо!

Эмо

Ответы [ 2 ]

1 голос
/ 26 апреля 2010
if ($_.lastrunoutcome = 0)

выглядит как ошибка; это должен быть оператор "-eq", а не "=". То есть:

if ($_.lastrunoutcome -eq 0)
1 голос
/ 26 апреля 2010

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

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

write-host "Message" @extraArgs

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

...