Ingolder
07-11-2009, 15:08
День добрый.
читаю методичку (хз откуда взятую) "Windows PowerShell Введение в технологии языка сценариев для пользователей без базовых знаний". (кому если надо - прикрепил)
Так вот, там есть пример они берут список служб и на его основе создают файл html и раскрашивают его в зависимости от состояния службы:
Get-Service | ConvertTo-Html -Property name,status | Foreach {
If ($_ -Like "*<td>Running</td>*") {$_ -Replace "<tr>", "<tr
bgcolor=green>"}
else {$_ -Replace "<tr>", "<tr bgcolor=red>"}} > .\get-service.html
Всё прекрасно работает, только отсюда возникает два вопроса.
1) почему неправильно работает, если мы уберём условие ELSE ? т.е. так:
Get-Service | ConvertTo-Html -Property name,status | Foreach {
If ($_ -Like "*<td>Running</td>*") {$_ -Replace "<tr>", "<tr
bgcolor=green>"}
} > .\get-service.html
Казалось бы, должен он раскрашивать только те, которые включены, а которые не включены - не раскрашивать. почему так не работает и как этого добиться?
неужели без else здесь нельзя - придётся раскрашивать в стандартные цвета, чтоле?
2) как раскрасить список процессов таком образом, чтобы наиболее активные процессы отличались от менее активных? попытался сделать по аналогии, у меня не получается:
Get-Process|sort cpu -Des|convertto-html name, cpu | % {if ($_.cpu -gt 30){$_ -replace "<tr>", "<tr bgcolor=red>"}else{$_ -replace "<tr>",
"<tr bgcolor=green>"}}| out-file 1.html
всё зелёное выдаёт.
p.s. хочется здесь сделать по принципу "больше, чем", нежели по принципу "первые столько-то".
а вот и третий вопрос назрел:
3) как раскрасить ячейки в одной строке разным цветом?
(интересует повершельная сторона вопроса а не хтмл-ная)
читаю методичку (хз откуда взятую) "Windows PowerShell Введение в технологии языка сценариев для пользователей без базовых знаний". (кому если надо - прикрепил)
Так вот, там есть пример они берут список служб и на его основе создают файл html и раскрашивают его в зависимости от состояния службы:
Get-Service | ConvertTo-Html -Property name,status | Foreach {
If ($_ -Like "*<td>Running</td>*") {$_ -Replace "<tr>", "<tr
bgcolor=green>"}
else {$_ -Replace "<tr>", "<tr bgcolor=red>"}} > .\get-service.html
Всё прекрасно работает, только отсюда возникает два вопроса.
1) почему неправильно работает, если мы уберём условие ELSE ? т.е. так:
Get-Service | ConvertTo-Html -Property name,status | Foreach {
If ($_ -Like "*<td>Running</td>*") {$_ -Replace "<tr>", "<tr
bgcolor=green>"}
} > .\get-service.html
Казалось бы, должен он раскрашивать только те, которые включены, а которые не включены - не раскрашивать. почему так не работает и как этого добиться?
неужели без else здесь нельзя - придётся раскрашивать в стандартные цвета, чтоле?
2) как раскрасить список процессов таком образом, чтобы наиболее активные процессы отличались от менее активных? попытался сделать по аналогии, у меня не получается:
Get-Process|sort cpu -Des|convertto-html name, cpu | % {if ($_.cpu -gt 30){$_ -replace "<tr>", "<tr bgcolor=red>"}else{$_ -replace "<tr>",
"<tr bgcolor=green>"}}| out-file 1.html
всё зелёное выдаёт.
p.s. хочется здесь сделать по принципу "больше, чем", нежели по принципу "первые столько-то".
а вот и третий вопрос назрел:
3) как раскрасить ячейки в одной строке разным цветом?
(интересует повершельная сторона вопроса а не хтмл-ная)