![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] как раскрасить html? |
|
PowerShell - [решено] как раскрасить html?
|
Старожил Сообщения: 318 |
День добрый.
читаю методичку (хз откуда взятую) "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) как раскрасить ячейки в одной строке разным цветом? (интересует повершельная сторона вопроса а не хтмл-ная) |
|
Отправлено: 15:08, 07-11-2009 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать 1. без Else нельзя, т.к. в этом случае альтернативные варианты будут удаляться из потока... если их не нужно красить, можно сделать пустую замену или просто продублировать объект (строку)
Get-Service | ConvertTo-Html -Property name,status | Foreach {` If ($_ -Like "*<td>Running</td>*") {$_ -Replace "<tr>", "<tr bgcolor=green>"}` Else {$_}} > .\get-service1.html Get-Process | ConvertTo-Html Name,CPU | ForEach {` [regex]::replace($_, "<tr>(?=<td>[^<]*</td><td>([3-9]\d,|\d{3}))","<tr bgcolor=red>")` } >.\get-service2.html |
Отправлено: 19:07, 07-11-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 318
|
Профиль | Отправить PM | Цитировать спасибо за ответ на первый вопрос!
коды под пунктами 2 и 3 выдают всё белое, ничего не раскрашивается.. и поясните их пожалуйста, мне во вторых строчках непонятно ничего. про повершгельную сторону имел ввиду что я хтмл понимаю, неепонимаю именно как в повершелле правильно написать |
Отправлено: 14:07, 11-11-2009 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Ingolder:
0. Формируем базовый HTML-документ (get-service0.html). 1. Подсвечиваем красным CPU >=30 (get-service2.html). Get-Content .\get-service0.html | ForEach {` [regex]::replace($_,"<tr>(?=<td>[^<]*</td><td>([3-9]\d[.,]|\d{3}))","<tr bgcolor=red>")` } >.\get-service2.html |
|
Отправлено: 10:51, 12-11-2009 | #4 |
Сотрудник Microsoft Сообщения: 56
|
Профиль | Сайт | Отправить PM | Цитировать "Методичка" взята тут, рядом лежит продолжение.
Что касается вопросов... В данном случае IMHO проще и понятнее сформировать HTML самому, например так: $Processes = Get-Process $Max = ($Processes | sort cpu)[-1].cpu $Mult = 255 / $max $HtmlItems = "" foreach ($P in $Processes) { $HtmlItems += ('<tr><td>{0}</td><td bgcolor="#FF{1:x2}{1:x2}">{2}</td></tr>' -f $P.Name, (255-([int]($P.CPU * $Mult))), $P.CPU) } $template = @" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>HTML TABLE</title> </head><body> <table> <colgroup> <col/> <col/> </colgroup> <tr><th>Name</th><th>CPU</th></tr> $HtmlItems </table> </body></html> "@ $template | set-content out.html |
|
Отправлено: 23:24, 15-11-2009 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - [решено] Как в WINXP HTML-ку перивесить нарабочий стол ??? | антигерой | Microsoft Windows 2000/XP | 3 | 13-12-2009 14:55 | |
[решено] Как сделать так, чтоб при переходе на example.com в него загружался не index.html? | maasja | Вебмастеру | 2 | 07-11-2009 18:43 | |
Как сделать обработку $_GET и сборку html-документа екзешником, как multitran.ru? | borg92 | Вебмастеру | 1 | 13-08-2009 10:23 | |
как сделать градиент в html? | rizz | Вебмастеру | 11 | 28-01-2007 21:10 | |
Как включить html? | Sherla | О сайте и форуме | 1 | 27-06-2003 11:49 |
|