Viernes Diversión Colorea Mi Web
Hace un tiempo publiqué un artículo que demuestra el uso de Invoke-Webrequest, que forma parte de PowerShell 3.0. Utilicé la página de Manning.com para mostrar los más vendidos de Print y MEAP. Por cierto, gracias a todos los que siguen haciendo populares los libros de PowerShell. Mi guión original simplemente escribió los resultados en la pantalla. Pero decidí que quería una forma de que mis libros se destacaran, así que hice un ligero ajuste.
#requires -version 3.0
#this version will color code titles that contain the key word
#it must be run in the PowerShell console
Param(
[ValidateNotNullorEmpty()]
[string]$Keyword="PowerShell",
[ValidateScript({[enum]::GetNames([consolecolor]) -contains $_})]
[string]$Color="Green"
)
#the web address to retrieve
$url= "http://manning.com"
#this is a one-time request
$data = Invoke-Webrequest -Uri $url -DisableKeepAlive
<#
the print best sellers will be listed first
MEAP best sellers willbe second
$data.ParsedHtml.getElementsByTagName("div") |
Where "classname" -eq "bestsellBox" |
Select -First 1 -ExpandProperty InnerText
#>
#parse out the DIV tags looking for bestSellbox
$text = $data.ParsedHtml.getElementsByTagName("div") |
Where "classname" -match "^bestsell" |
Select -ExpandProperty InnerText
foreach ($element in $text) {
#parse the text
$element.split("`n") | foreach {
#write titles with keyword in the name in Green
#won't work in the ISE
if ($_.trim() -match $keyword ) {
$c = $color
}
else {
#use the current console color
$c = $host.ui.RawUI.ForegroundColor
}
#display the result
Write-Host $_ -ForegroundColor $c
}
#insert a blank line between Print and MEAP bestsellers
write "`r"
}
El script todavía usa Invoke-Webrequest para analizar la página de Manning.com. Pero agregué algo de lógica para verificar cada título en busca de una palabra clave, como PowerShell. Si lo encuentro, defino una variable de color y muestro el resultado usando Write-Host y ese color. Si no se encuentra, el color se establece en el color de primer plano actual. Este script solo funcionará en la consola de PowerShell.
Ahora, antes de que alguien empiece a gritar sobre el uso de Write-Host, sí, me doy cuenta de que todo lo que estoy haciendo es escribir en la pantalla. Pero en esta situación estoy bien con eso. Nunca tendré necesidad de hacer nada más, excepto leer la información y agregarle un poco de color lo hará aún más fácil.
Sin embargo, agregué cierta flexibilidad agregando parámetros para especificar la palabra clave y el color. Establecí algunos valores predeterminados e incluí validación de parámetros. Aquí está el resultado predeterminado:
Pero puedo comprobar con la misma facilidad otros valores.
Obviamente, este guión sólo es útil para mí o para otros autores de Manning que tengan curiosidad sobre la situación de nuestros libros. Pero este es un artículo de Friday Fun, así que espero que hayas aprendido algún consejo o truco útil.

