Quantcast
Channel: Replace | Operating systems, scripting, PowerShell and security | jesusninoc.com
Viewing all 237 articles
Browse latest View live

How is this site ranked relative to other sites?


Convertir una lista de ficheros MP4 a MP3 con FFmpeg

Conocer la relevancia de una búsqueda en Bing

$
0
0

$urls='https://www.bing.com/search?q=powershell'
$result=Invoke-WebRequest $urls
$valor=($result.AllElements | ? {$_.class -eq “sb_count”}).innerText
$valor
$valor=$valor.replace(".","").replace("resultados","")
switch([Int]$valor)
{
{$_ -ge 0 -and $_ -le 1000}{"Poco importante"}
{$_ -ge 1001 -and $_ -le 10000}{"Algo importante"}
{$_ -ge 10000 -and $_ -le 100000000}{"Muy importante"}
}

The post Conocer la relevancia de una búsqueda en Bing appeared first on Scripting and security.

Cifrar con un algoritmo sencillo el nombre y el contenido de un fichero de texto (enviar la clave utilizada en el algoritmo mediante una petición web a un servidor)

$
0
0

#Cifrar el contenido del fichero
$fichero="fichero.txt"
$cifrado=gc $fichero
$clavecifrado=1
$textocifrado=(0..($cifrado.Length-1) | % {[char]::ConvertFromUtf32([char]::ConvertToUtf32($cifrado[$_].ToString(),0)+$clavecifrado)}) -join ""

#Cifrar el nombre y añadir el contenido cifrado
#Quitamos los puntos y otros caracteres para no tener errores a la hora de crear el nuevo fichero cifrado
$ficherosin=$fichero.Replace(".","")
$ficherocifrado=(0..($ficherosin.Length-1) | % {[char]::ConvertFromUtf32([char]::ConvertToUtf32($ficherosin[$_].ToString(),0)+$clavecifrado)}) -join ""
$textocifrado | Out-File $ficherocifrado

$clavecifrado

Invoke-WebRequest "https://www.jesusninoc.com/clave/$clavecifrado"

The post Cifrar con un algoritmo sencillo el nombre y el contenido de un fichero de texto (enviar la clave utilizada en el algoritmo mediante una petición web a un servidor) appeared first on Scripting and security.

Descifrar con un algoritmo sencillo el nombre y el contenido de un fichero de texto

$
0
0

#Fichero cifrado para descifrar
#El fichero se ha cifrado mediante https://www.jesusninoc.com/2017/05/16/cifrar-con-un-algoritmo-sencillo-el-nombre-y-el-contenido-de-un-fichero-de-texto-enviar-la-clave-utilizada-en-el-algoritmo-mediante-una-peticion-web-a-un-servidor/
$fichero="gjdifspuyu"
$cifrado=gc $fichero
$clavecifrado=1
$textodescifrado=(0..($cifrado.Length-1) | % {[char]::ConvertFromUtf32([char]::ConvertToUtf32($cifrado[$_].ToString(),0)-$clavecifrado)}) -join ""

#Descifrar el nombre y el contenido
$ficherocifrado=(0..($fichero.Length-1) | % {[char]::ConvertFromUtf32([char]::ConvertToUtf32($fichero[$_].ToString(),0)-$clavecifrado)}) -join ""
$textodescifrado | Out-File $ficherocifrado

The post Descifrar con un algoritmo sencillo el nombre y el contenido de un fichero de texto appeared first on Scripting and security.

Ejercicios de PowerShell: crear tabla de caracteres en Base64

$
0
0

#Array que va a contener todos los caracteres en Base64
$arrayBase64=""
#Añadir al array las mayúsculas
$arrayBase64+=[char]'A'..[char]'Z' | %{[char]$_}
#Añadir al array las minúsculas
$arrayBase64+=[char]'a'..[char]'z' | %{[char]$_}
#Añadir al array los números
$arrayBase64+=[char]'0'..[char]'9' | %{[char]$_}
#Añadir al array el carácter + y /
$arrayBase64+="+"
$arrayBase64+="/"
#Quitar los espacios del array
$arrayBase64=$arrayBase64-replace " "
#Mostrar los caracteres
$arrayBase64
#Número de caracteres en Base64
$arrayBase64.Length
#Primer carácter
$arrayBase64[0]
#Último carácter
$arrayBase64[$arrayBase64.Length-1]

The post Ejercicios de PowerShell: crear tabla de caracteres en Base64 appeared first on Scripting and security.

Obtener los nombres de las funciones exportadas de un archivo DLL con DUMPBIN desde PowerShell (explicación paso a paso del script)

$
0
0

# Información sobre Microsoft COFF Binary File Dumper DUMPBIN
# https://msdn.microsoft.com/es-es/library/c1h23y6c.aspx

cd "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\bin\Hostx86\x86"

# Listar funciones exportadas de un archivo DLL con DUMPBIN desde PowerShell
$content =  .\dumpbin.exe /exports C:\Windows\System32\zipfldr.dll

# Procesar la información para obtener únicamente las funciones
# Quitar líneas sin contenido
$content = ($content | ? {$_.trim() -ne "" }).trim()
# Crear un string de toda la información para poder extraer el contenido de las funciones
$all = ""
$content | %{$all = $all + $_ + ";"}
# Extraer el contenido de las funciones
$start = $all.indexof("ordinal hint RVA      name;")
$end = $all.indexof("Summary")
$length = $end - $start
$funciones = $all.substring($start, $length).replace("Summary","")

# Con el contenido de las funciones extraer el nombre de las funciones
# Convertir un array a CSV con PowerShell
# ES POSIBLE QUE HAYA QUE AÑADIR OTRAS COMBINACIONES DE ESPACIOS
$data = $funciones.split(";").Replace(" "," ").Replace(" "," ").Replace(" "," ").Replace(" ",",") | ConvertFrom-Csv

# Mostrar el nombre de las funciones
$data.name


Explicación paso a paso del script

Listar funciones exportadas de un archivo DLL con DUMPBIN desde PowerShell

# Información sobre Microsoft COFF Binary File Dumper DUMPBIN
# https://msdn.microsoft.com/es-es/library/c1h23y6c.aspx

cd "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\bin\Hostx86\x86"

# Listar funciones exportadas de un archivo DLL con DUMPBIN desde PowerShell
$content =  .\dumpbin.exe /exports C:\Windows\System32\zipfldr.dll

Procesar la información para obtener únicamente las funciones. Quitar líneas sin contenido

# Procesar la información para obtener únicamente las funciones
# Quitar líneas sin contenido
$content = ($content | ? {$_.trim() -ne "" }).trim()

Crear un string de toda la información para poder extraer el contenido de las funciones

# Crear un string de toda la información para poder extraer el contenido de las funciones
$all = ""
$content | %{$all = $all + $_ + ";"}
# Extraer el contenido de las funciones
$start = $all.indexof("ordinal hint RVA      name;")
$end = $all.indexof("Summary")
$length = $end - $start
$funciones = $all.substring($start, $length).replace("Summary","")

Con el contenido de las funciones extraer el nombre de las funciones

# Con el contenido de las funciones extraer el nombre de las funciones
# Convertir un array a CSV con PowerShell
# ES POSIBLE QUE HAYA QUE AÑADIR OTRAS COMBINACIONES DE ESPACIOS
$data = $funciones.split(";").Replace(" "," ").Replace(" "," ").Replace(" "," ").Replace(" ",",") | ConvertFrom-Csv
# Mostrar el nombre de las funciones
$data.name

The post Obtener los nombres de las funciones exportadas de un archivo DLL con DUMPBIN desde PowerShell (explicación paso a paso del script) appeared first on Scripting and security.

Llamar con el valor de la aplicación calculadora (calc.exe) a cada función obtenida con DUMBIN para cada DLL

$
0
0

¿Cómo obtener los nombres de las funciones exportadas de un archivo DLL con DUMPBIN desde PowerShell (explicación paso a paso del script)?

https://www.jesusninoc.com/2018/04/18/obtener-los-nombres-de-las-funciones-exportadas-de-un-archivo-dll-con-dumpbin-desde-powershell-explicacion-paso-a-paso-del-script/


Llamar a una función

rundll32 zipfldr.dll, RouteTheCall calc.exe

Script para llamar a cada función obtenida con DUMPBIN con el valor de la aplicación calculadora (calc.exe)

# Ejecutar el siguiente script puede ocasionar problemas en Windows

# Información sobre Microsoft COFF Binary File Dumper DUMPBIN
# https://msdn.microsoft.com/es-es/library/c1h23y6c.aspx

cd "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\bin\Hostx86\x86"

# Listar funciones exportadas de un archivo DLL con DUMPBIN desde PowerShell
$content =  .\dumpbin.exe /exports C:\Windows\System32\zipfldr.dll

# Procesar la información para obtener únicamente las funciones
# Quitar líneas sin contenido
$content = ($content | ? {$_.trim() -ne "" }).trim()
# Crear un string de toda la información para poder extraer el contenido de las funciones
$all = ""
$content | %{$all = $all + $_ + ";"}
# Extraer el contenido de las funciones
$start = $all.indexof("ordinal hint RVA      name;")
$end = $all.indexof("Summary")
$length = $end - $start
$funciones = $all.substring($start, $length).replace("Summary","")

# Con el contenido de las funciones extraer el nombre de las funciones
# Convertir un array a CSV con PowerShell
# ES POSIBLE QUE HAYA QUE AÑADIR OTRAS COMBINACIONES DE ESPACIOS
$data = $funciones.split(";").Replace(" "," ").Replace(" "," ").Replace(" "," ").Replace(" ",",") | ConvertFrom-Csv
# Llamar a cada función obtenida con DUMPBIN con el valor de la aplicación calculadora (calc.exe)
$data.name | %{$_; rundll32 zipfldr.dll, $_ calc.exe}

The post Llamar con el valor de la aplicación calculadora (calc.exe) a cada función obtenida con DUMBIN para cada DLL appeared first on Scripting and security.


Llamar con el valor de la aplicación calculadora (calc.exe) a cada función obtenida con DUMBIN para cada DLL (el valor de la DLL que se analiza está en una variable)

$
0
0

# Ejecutar el siguiente script puede ocasionar problemas en Windows

# Información sobre Microsoft COFF Binary File Dumper DUMPBIN
# https://msdn.microsoft.com/es-es/library/c1h23y6c.aspx

cd "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\bin\Hostx86\x86"

# Nombre de DLL que se va a analizar
$dll = "advpack.dll"

# Listar funciones exportadas de un archivo DLL con DUMPBIN desde PowerShell
$content =  .\dumpbin.exe /exports C:\Windows\System32\$dll

# Procesar la información para obtener únicamente las funciones
# Quitar líneas sin contenido
$content = ($content | ? {$_.trim() -ne "" }).trim()
# Crear un string de toda la información para poder extraer el contenido de las funciones
$all = ""
$content | %{$all = $all + $_ + ";"}
# Extraer el contenido de las funciones
$start = $all.indexof("ordinal hint RVA      name;")
$end = $all.indexof("Summary")
$length = $end - $start
$funciones = $all.substring($start, $length).replace("Summary","")

# Con el contenido de las funciones extraer el nombre de las funciones
# Convertir un array a CSV con PowerShell
# ES POSIBLE QUE HAYA QUE AÑADIR OTRAS COMBINACIONES DE ESPACIOS
$data = $funciones.split(";").Replace(" "," ").Replace("    "," ").Replace("   "," ").Replace(" ",",") | ConvertFrom-Csv

# Llamar a cada función obtenida con DUMPBIN con el valor de la aplicación calculadora (calc.exe)
$data.name | %{$_; rundll32 $dll, $_ calc.exe; Start-Sleep -Seconds 5}

The post Llamar con el valor de la aplicación calculadora (calc.exe) a cada función obtenida con DUMBIN para cada DLL (el valor de la DLL que se analiza está en una variable) appeared first on Scripting and security.

Convertir una web con una tabla de calorías de todos los alimentos en una tabla interactiva en PowerShell

$
0
0

$url = "http://recetasdecocina.elmundo.es/tabla-calorias"
$result = Invoke-WebRequest $url
$objetoresult = $result.AllElements | Where tagName -eq “TR” | %{$_.outerHTML -replace "<TD width=193>","|"}
$objetoresultgrid = ($objetoresult -replace "<.*?>" -replace "`n","").trim() | %{($_)}
$objetoresultgrid | %{($_.split("|").trim())[0]}

$mostrar = foreach ($item in $objetoresultgrid)
{
    if($item -notmatch "CALORÍAS")
    {
        $item | select @{l='Producto';e={$_.split("|").trim()[0]}},@{l='Calorías';e={[Int]$_.split("|").trim()[1]}}
    }
}

$mostrar | Out-GridView

The post Convertir una web con una tabla de calorías de todos los alimentos en una tabla interactiva en PowerShell appeared first on Scripting and security.

Convertir un fichero RTF en TXT con PowerShell

Quitar las etiquetas HTML de una cadena

Calcular el valor nutricional (azúcares) de todos los fabricantes de productos encontrados en la tienda online de un supermercado en PowerShell

$
0
0

$productosconurl = @{}

$web = Invoke-WebRequest "https://www.alcampo.es/compra-online/bebidas/zumos-de-frutas/naranja/c/W110201?q=%3Arelevance&show=All"

foreach($link in ($web.links.href | Group-Object).name){
    if ($link -match "compra-online/bebidas/zumos-de-frutas/naranja" -and $link -notmatch "/c/")
    {
        $urlsanalizar = "https://www.alcampo.es$link"
        $urlsanalizar
        
        $web = Invoke-WebRequest $urlsanalizar
 
        # Datos nutricionales del producto
        $productos = @{}
 
        # Extraer los valores nutricionales del producto
        ($web.AllElements | Where Class -eq “productNutritionalInformation valoresNutricionalesTabla”).innerHtml | %{
            ($_ -replace "</SPAN> <SPAN ","</SPAN>|<SPAN " -replace "<.*?>" -replace " g" -replace " Kj" -replace " Kcal" -split "`n" | ? {$_.trim() -ne ""} | ? {$_.trim() -notmatch "nutricionales"}).trim()
        } | %{$productos.add($_.split("|")[0],$_.split("|")[1])}
 
        $pesos = ($web.AllElements | Where Class -eq “productNutritionalInformation valoresNutricionalesTabla tablaInformacionAdicional”).innerText | %{
            ($_  -replace "<.*?>" -split "`n" | ? {$_.trim() -ne ""}).trim() -replace "g"
        }

        $nombre = ($web.AllElements | Where Class -eq “productDesc”).innerText | %{
            $_
        }
 
        # Añadir los valores nutricionales del producto a la estructura
        0..$pesos.Count | % {if($_%2-eq 0 -and $_ -lt 19){$productos.add($pesos[$_],$pesos[$_+1])}}
 
        # Calcular el valor nutricional en función de la cantidad del alimento consumido
        $comidacantidad = 100
 
        $productos.'Peso neto escurrido'
        $productos.Add('Valor energético(Kcal) Neto',($productos.'Valor energético(Kcal)' / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Hidatos de carbono Neto',($productos.'Hidratos de carbono' / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Grasas Netas',($productos.Grasas / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Grasas saturadas Netas',($productos.'Grasas saturadas' / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Azúcares Netos',($productos.Azúcares / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Proteínas Netas',($productos.Proteínas / $productos.'Peso Neto')*$comidacantidad)
 
        # Mostrar la estructura con los valores nutricionales
        $productos.GetEnumerator() | sort -Property name

        $productosconurl.Add($nombre,$productos.Azúcares)
    }
}

$productosconurl.GetEnumerator() | Select-Object Key,@{n='Valor';e={[Double]($_.Value)}} | Out-GridView

The post Calcular el valor nutricional (azúcares) de todos los fabricantes de productos encontrados en la tienda online de un supermercado en PowerShell appeared first on Scripting and security.

Mostrar y comparar la cantidad de azúcar que tienen los productos de consumo encontrados en la tienda online de un supermercado mediante PowerShell

$
0
0

Productos analizados:

  • Bollería y pastelería
  • Leche
  • Galletas
  • Zumo de naranja
  • Zumo de melocotón
  • Zumo de mosto

Importante

  • VALOR NUTRICIONAL MEDIO POR 100 (Columna Valor).
  • ALGUNOS PRODUCTOS PUEDEN TENER CANTIDAD 0 DE AZÚCAR PORQUE EL SUPERMERCADO NO HA INDICADO LA CANTIDAD EN LA INFORMACIÓN ADICIONAL DEL PRODUCTO.

Cantidad de azúcar que tiene la bollería y pastelería

https://www.alcampo.es/compra-online/alimentacion/desayuno-y-merienda/bolleria-y-pasteleria/c/W1011

Cantidad de azúcar que tienen las galletas

https://www.alcampo.es/compra-online/alimentacion/desayuno-y-merienda/galletas/c/W100805

Cantidad de azúcar que tiene la leche

https://www.alcampo.es/compra-online/alimentacion/huevos-leche-yogures-y-lacteos/leche/c/W1603

Cantidad de azúcar que tienen los zumos de melocotón

https://www.alcampo.es/compra-online/bebidas/zumos-de-frutas/melocoton/c/W110202

Cantidad de azúcar que tienen los zumos de mosto

https://www.alcampo.es/compra-online/bebidas/zumos-de-frutas/mosto/c/W110208

Cantidad de azúcar que tienen los zumos de naranja

https://www.alcampo.es/compra-online/bebidas/zumos-de-frutas/naranja/c/W110201


El código genérico que se ha utilizado para realizar el cálculo es:

$productosconurl = @{}

$web = Invoke-WebRequest "https://www.alcampo.es/compra-online/bebidas/zumos-de-frutas/naranja/c/W110201?q=%3Arelevance&show=All"

foreach($link in ($web.links.href | Group-Object).name){
    if ($link -match "compra-online/bebidas/zumos-de-frutas/naranja" -and $link -notmatch "/c/")
    {
        $urlsanalizar = "https://www.alcampo.es$link"
        $urlsanalizar
        
        $web = Invoke-WebRequest $urlsanalizar
 
        # Datos nutricionales del producto
        $productos = @{}
 
        # Extraer los valores nutricionales del producto
        ($web.AllElements | Where Class -eq “productNutritionalInformation valoresNutricionalesTabla”).innerHtml | %{
            ($_ -replace "</SPAN> <SPAN ","</SPAN>|<SPAN " -replace "<.*?>" -replace " g" -replace " Kj" -replace " Kcal" -split "`n" | ? {$_.trim() -ne ""} | ? {$_.trim() -notmatch "nutricionales"}).trim()
        } | %{$productos.add($_.split("|")[0],$_.split("|")[1])}
 
        $pesos = ($web.AllElements | Where Class -eq “productNutritionalInformation valoresNutricionalesTabla tablaInformacionAdicional”).innerText | %{
            ($_  -replace "<.*?>" -split "`n" | ? {$_.trim() -ne ""}).trim() -replace "g"
        }

        $nombre = ($web.AllElements | Where Class -eq “productDesc”).innerText | %{
            $_
        }
 
        # Añadir los valores nutricionales del producto a la estructura
        0..$pesos.Count | % {if($_%2-eq 0 -and $_ -lt 19){$productos.add($pesos[$_],$pesos[$_+1])}}
 
        # Calcular el valor nutricional en función de la cantidad del alimento consumido
        $comidacantidad = 100
 
        $productos.'Peso neto escurrido'
        $productos.Add('Valor energético(Kcal) Neto',($productos.'Valor energético(Kcal)' / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Hidatos de carbono Neto',($productos.'Hidratos de carbono' / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Grasas Netas',($productos.Grasas / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Grasas saturadas Netas',($productos.'Grasas saturadas' / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Azúcares Netos',($productos.Azúcares / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Proteínas Netas',($productos.Proteínas / $productos.'Peso Neto')*$comidacantidad)
 
        # Mostrar la estructura con los valores nutricionales
        $productos.GetEnumerator() | sort -Property name

        $productosconurl.Add($nombre,$productos.Azúcares)
    }
}

$productosconurl.GetEnumerator() | Select-Object Key,@{n='Valor';e={[Double]($_.Value)}} | Out-GridView

The post Mostrar y comparar la cantidad de azúcar que tienen los productos de consumo encontrados en la tienda online de un supermercado mediante PowerShell appeared first on Scripting and security.

Comprobar en varias noticias si un texto contiene una palabra, extrayendo las palabras del texto mediante Spell de Linux desde PowerShell con WSL

$
0
0

# Descargar el fichero RSS
$web = (Invoke-WebRequest "https://rss.elconfidencial.com/espana/").content

# Convertir para ver las palabras con acentos
$utf8 = [System.Text.Encoding]::GetEncoding(65001)
$iso88591 = [System.Text.Encoding]::GetEncoding(28591) #ISO 8859-1 ,Latin-1
$wrong_bytes = $utf8.GetBytes($web)
$right_bytes = [System.Text.Encoding]::Convert($utf8,$iso88591,$wrong_bytes)
$right_string = $utf8.GetString($right_bytes)

# Detectar las palabras que están mal escritas en cada artículo
# https://www.jesusninoc.com/2018/06/17/detectar-las-palabras-que-estan-mal-escritas-en-un-articulo-de-un-diario-con-un-comando-en-linux-y-ejecutarlo-con-wsl-windows-subsystem-for-linux-desde-powershell/
$xml = [xml]$right_string
$xml.feed.entry | %{
    $_.id
    # Spell http://www.linfo.org/spell.html
    $_.content.'#cdata-section' -replace "<.*?>" | bash -c 'spell' | Group-Object | Where-Object {$_.Name -match "Sánchez"}
}

The post Comprobar en varias noticias si un texto contiene una palabra, extrayendo las palabras del texto mediante Spell de Linux desde PowerShell con WSL appeared first on Scripting and security.


Mostrar y generar en tiempo real una tabla HTML con el valor nutricional (azúcares) de todos los fabricantes de un producto encontrado en la tienda online de un supermercado en PowerShell

$
0
0

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

$productosconurl = @{}

$web = Invoke-WebRequest "https://www.alcampo.es/compra-online/bebidas/zumos-de-frutas/naranja/c/W110201?q=%3Arelevance&show=All"

foreach($link in ($web.links.href | Group-Object).name){
    if ($link -match "compra-online/bebidas/zumos-de-frutas/naranja" -and $link -notmatch "/c/")
    {
        $urlsanalizar = "https://www.alcampo.es$link"
        $urlsanalizar
        
        $web = Invoke-WebRequest $urlsanalizar
 
        # Datos nutricionales del producto
        $productos = @{}
 
        # Extraer los valores nutricionales del producto
        ($web.AllElements | Where Class -eq “productNutritionalInformation valoresNutricionalesTabla”).innerHtml | %{
            ($_ -replace "</SPAN> <SPAN ","</SPAN>|<SPAN " -replace "<.*?>" -replace " g" -replace " Kj" -replace " Kcal" -split "`n" | ? {$_.trim() -ne ""} | ? {$_.trim() -notmatch "nutricionales"}).trim()
        } | %{$productos.add($_.split("|")[0],$_.split("|")[1])}
 
        $pesos = ($web.AllElements | Where Class -eq “productNutritionalInformation valoresNutricionalesTabla tablaInformacionAdicional”).innerText | %{
            ($_  -replace "<.*?>" -split "`n" | ? {$_.trim() -ne ""}).trim() -replace "g"
        }

        $nombre = ($web.AllElements | Where Class -eq “productDesc”).innerText | %{
            $_
        }
 
        # Añadir los valores nutricionales del producto a la estructura
        0..$pesos.Count | % {if($_%2-eq 0 -and $_ -lt 19){$productos.add($pesos[$_],$pesos[$_+1])}}
 
        # Calcular el valor nutricional en función de la cantidad del alimento consumido
        $comidacantidad = 100
 
        $productos.'Peso neto escurrido'
        $productos.Add('Valor energético(Kcal) Neto',($productos.'Valor energético(Kcal)' / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Hidatos de carbono Neto',($productos.'Hidratos de carbono' / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Grasas Netas',($productos.Grasas / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Grasas saturadas Netas',($productos.'Grasas saturadas' / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Azúcares Netos',($productos.Azúcares / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Proteínas Netas',($productos.Proteínas / $productos.'Peso Neto')*$comidacantidad)
 
        # Mostrar la estructura con los valores nutricionales
        $productos.GetEnumerator() | sort -Property name

        $productosconurl.Add($nombre,$productos.Azúcares)
    }
}

$contenido = $productosconurl.GetEnumerator() | Select-Object @{n='Producto';e={$_.Key}},@{n='Azúcar';e={[Double]($_.Value)}} | sort Azúcar -Descending | ConvertTo-Html

$contenido = $contenido.replace("Azúcar","Az&uacute;car")

# Datos URIs, URLs prefijados con los datos: esquema, permiten a los creadores de contenido incorporar pequeños archivos en linea en los documentos

# Codificar en Base64

$base64 = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($contenido))

Start-Process chrome ("data:text/html;base64," + $base64)

Código web generado en tiempo real y codificado en Base64 para que pueda ser interpretado por Google Chrome

data:text/html;base64,PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4gPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPiA8aGVhZD4gPHRpdGxlPkhUTUwgVEFCTEU8L3RpdGxlPiA8L2hlYWQ+PGJvZHk+IDx0YWJsZT4gPGNvbGdyb3VwPjxjb2wvPjxjb2wvPjwvY29sZ3JvdXA+IDx0cj48dGg+UHJvZHVjdG88L3RoPjx0aD5BesO6Y2FyPC90aD48L3RyPiA8dHI+PHRkPk4mIzIzMztjdGFyIGRlIG5hcmFuamEgeSB6YW5haG9yaWEgQVVDSEFOIGJyaWNrIGRlIDEgbGl0cm88L3RkPjx0ZD4xMSwyPC90ZD48L3RyPiA8dHI+PHRkPk4mIzIzMztjdGFyIGRlIG5hcmFuamEgeSBtYW5nbyBBVUNIQU4gYnJpY2sgZGUgMSBsaXRybzwvdGQ+PHRkPjExLDE8L3RkPjwvdHI+IDx0cj48dGQ+TiYjMjMzO2N0YXIgZGUgbmFyYW5qYSBET04gU0lNJiMyMTE7TiBib3RlbGxhIGRlIDEsNSBsaXRyb3M8L3RkPjx0ZD4xMCw0PC90ZD48L3RyPiA8dHI+PHRkPk4mIzIzMztjdGFyIGRlIG5hcmFuamEgWlVNT1NPTCBicmljayBkZSAxIGxpdHJvPC90ZD48dGQ+MTAsNDwvdGQ+PC90cj4gPHRyPjx0ZD5OJiMyMzM7Y3RhciBkZSBOYXJhbmphIEdSQU5JTkkgMzMgY2M8L3RkPjx0ZD4xMCwzPC90ZD48L3RyPiA8dHI+PHRkPk4mIzIzMztjdGFyIGRlIG5hcmFuamEgR1JBTklOSSBib3RlbGxhIGRlIDEgbGl0cm88L3RkPjx0ZD4xMCwxPC90ZD48L3RyPiA8dHI+PHRkPk4mIzIzMztjdGFyIGRlIG5hcmFuamEgR1JBTklOSSBib3RlbGxhIGRlIDEsNSBsaXRyb3M8L3RkPjx0ZD4xMCwxPC90ZD48L3RyPiA8dHI+PHRkPk4mIzIzMztjdGFyIGRlIG5hcmFuamEgQVVDSEFOIGJyaWNrIGRlIDIgbGl0cm9zPC90ZD48dGQ+MTAsMTwvdGQ+PC90cj4gPHRyPjx0ZD5CcmljayB6dW1vIGV4cHJpbWlkbyBkZSBuYXJhbmphIHNpbiBwdWxwYSBET04gU0lNJiMyMTE7TiAyIGxpdHJvczwvdGQ+PHRkPjEwPC90ZD48L3RyPiA8dHI+PHRkPlp1bW8gZGUgc29qYSB5IG5hcmFuamEgRE9OIFNJTU9OIFNPWSBicmljayBkZSAxIGxpdHJvPC90ZD48dGQ+MTA8L3RkPjwvdHI+IDx0cj48dGQ+WnVtbyBleHByaW1pZG8gZGUgbmFyYW5qYSBET04gU0lNJiMyMTE7TiBicmljayBkZSAxIGxpdHJvPC90ZD48dGQ+MTA8L3RkPjwvdHI+IDx0cj48dGQ+WnVtbyBleHByaW1pZG8gZGUgbmFyYW5qYSBzaW4gcHVscGEgRE9OIFNJTSYjMjExO04gYnJpY2sgZGUgMTIsNSBjZW50aWxpdHJvcyBwYWNrIGRlIDQgdWRzLjwvdGQ+PHRkPjEwPC90ZD48L3RyPiA8dHI+PHRkPkJyaWNrIHp1bW8gZGUgbmFyYW5qYSBjb24gcHVscGEgKDEwMCUgbmFyYW5qYSBleHByaW1pZGEpIERPTiBTSU0mIzIxMTtOIDJsPC90ZD48dGQ+MTA8L3RkPjwvdHI+IDx0cj48dGQ+QnJpY2sgenVtbyBkZSBuYXJhbmphIERPTiBTSU0mIzIxMTtOIDFsPC90ZD48dGQ+MTA8L3RkPjwvdHI+IDx0cj48dGQ+QnJpY2sgenVtbyBleHByaW1pZG8gZGUgbmFyYW5qYSBzaW4gcHVscGEgRE9OIFNJTSYjMjExO04gMSBsaXRybzwvdGQ+PHRkPjEwPC90ZD48L3RyPiA8dHI+PHRkPlp1bW8gZGUgbmFyYW5qYSB5IHNvamEgZGUgb3JpZ2VuIDEwMCUgdmVnZXRhbCBWSVZFU09ZIGRlIFBhc2N1YWwgMSBsLjwvdGQ+PHRkPjksNzwvdGQ+PC90cj4gPHRyPjx0ZD5CcmljayB6dW1vIGV4cHJpbWlkbyBuYXJhbmphIEFVQ0hBTiAxIGw8L3RkPjx0ZD45LDc8L3RkPjwvdHI+IDx0cj48dGQ+TiYjMjMzO2N0YXIgZGUgbmFyYW5qYSBNSU5VVEUgTUFJRCBib3RlbGxhIGRlIDEgbGl0cm88L3RkPjx0ZD45LDc8L3RkPjwvdHI+IDx0cj48dGQ+WnVtbyBkZSBuYXJhbmphIGV4cHJpbWlkbyBjb24gcHVscGEgWlVNT1NPTCAxIGxpdHJvPC90ZD48dGQ+OSw0PC90ZD48L3RyPiA8dHI+PHRkPlp1bW8gZXhwcmltaWRvIGRlIG5hcmFuamEgc2luIHB1bHBhIFpVTU9TT0wgYm90ZWxsYSBkZSA4NSBjZW50aWxpdHJvczwvdGQ+PHRkPjksNDwvdGQ+PC90cj4gPHRyPjx0ZD5adW1vIGV4cHJpbWlkbyBkZSBuYXJhbmphIGNvbiBwdWxwYSBaVU1PU09MIGJvdGVsbGEgZGUgODUgY2VudGlsaXRyb3M8L3RkPjx0ZD45LDQ8L3RkPjwvdHI+IDx0cj48dGQ+WnVtbyBkZSBuYXJhbmphIGV4cHJpbWlkYSBzaW4gcHVscGEsIFpVTU9TT0wsIGJyaWNrIGRlIHVuIGxpdHJvLjwvdGQ+PHRkPjksNDwvdGQ+PC90cj4gPHRyPjx0ZD5OJiMyMzM7Y3RhciBkZSBuYXJhbmphIHkgbWFuZ28gR1JBTklOSSBib3RlbGxhIGRlIDEgbGl0cm88L3RkPjx0ZD45LDI8L3RkPjwvdHI+IDx0cj48dGQ+QnJpY2sgenVtbyBkZSBuYXJhbmphIGR1bGNlIEdSQU5JTkkgMSBsPC90ZD48dGQ+OTwvdGQ+PC90cj4gPHRyPjx0ZD5adW1vIGVjb2wmIzI0MztnaWNvIGRlIG1hbmdvIHkgbmFyYW5qYSBMQU1CREEgYm90ZWxsYSBkZSAxIGwuPC90ZD48dGQ+OCw5PC90ZD48L3RyPiA8dHI+PHRkPlp1bW8gZGUgbmFyYW5qYSBmcmVzY2EgU09OQVRVUkFMIDI1MCBNaWxpbGl0cm9zPC90ZD48dGQ+OCw3PC90ZD48L3RyPiA8dHI+PHRkPkJyaWNrIHp1bW8gZGUgbmFyYW5qYSBBVUNIQU4gMSBsPC90ZD48dGQ+OCw0PC90ZD48L3RyPiA8dHI+PHRkPlp1bW8gZGUgTmFyYW5qYSBKVVZFUiBCb3RlbGxhIDEgbC48L3RkPjx0ZD44LDQ8L3RkPjwvdHI+IDx0cj48dGQ+TiYjMjMzO2N0YXIgZGUgbmFyYW5qYSB5IHphbmFob3JpYSBHUkFOSU5JIGJvdGVsbGEgZGUgMSBsaXRybzwvdGQ+PHRkPjgsMzwvdGQ+PC90cj4gPHRyPjx0ZD5adW1vIGVjb2wmIzI0MztnaWNvIGRlIG5hcmFuamEgTEFNQkRBIGJvdGVsbGEgZGUgMSBsLjwvdGQ+PHRkPjcsMTwvdGQ+PC90cj4gPHRyPjx0ZD5OJiMyMzM7Y3RhciBjb24gc3RldmlhIGRlIG5hcmFuamEgTUlOVVRFIE1BSUQgYm90ZWxsYSBkZSAxIGxpdHJvPC90ZD48dGQ+NSw3PC90ZD48L3RyPiA8dHI+PHRkPk4mIzIzMztjdGFyIGRlIG5hcmFuamEgSlVWRVIgMiBsLjwvdGQ+PHRkPjUsNjwvdGQ+PC90cj4gPC90YWJsZT4gPC9ib2R5PjwvaHRtbD4=


Link a la web (para ver la web es necesario pulsar con el botón de la derecha encima del enlace y pulsar en “Abrir enlace en una pestaña nueva”

The post Mostrar y generar en tiempo real una tabla HTML con el valor nutricional (azúcares) de todos los fabricantes de un producto encontrado en la tienda online de un supermercado en PowerShell appeared first on Scripting and security.

Convertir varios ficheros RTF en TXT con PowerShell

Ejercicios de PowerShell: saber en qué posición se encuentran las mismas palabras dentro de un texto y sustituir por un número

$
0
0

# Texto sobre el que realizar el ejercicio

$fichero = "Hola es distinto a hola y también a ola"

# Saber en qué posición se encuentran las mismas palabras y sustituir por un número
# Primer paso es quedarse todas las palabras distintas que hay

$palabras = ($fichero.split(" ") | Sort-Object Length -Descending | Group-Object -CaseSensitive).Name
$palabras

# Segundo paso es sustituir las palabras por la posición que ocupan

$ficheroremplazado = $fichero
$palabras | %{
    $ficheroremplazado = $ficheroremplazado.Replace($_,$palabras.IndexOf($_))
}
$ficheroremplazado

# Para volver a obtener la frase sustituir las posiciones de las palabras por la palabra

$ficherosinremplazo = $ficheroremplazado
$palabras | %{
    $ficherosinremplazo = $ficherosinremplazo.Replace($palabras.IndexOf($_),$_)
}
$ficherosinremplazo

The post Ejercicios de PowerShell: saber en qué posición se encuentran las mismas palabras dentro de un texto y sustituir por un número appeared first on Scripting and security.

Mostrar una tabla HTML con el valor nutricional (azúcares) de todos los fabricantes de productos encontrados en la tienda online de un supermercado en PowerShell

$
0
0

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

$productosconurl = @{}

$web = Invoke-WebRequest "https://www.alcampo.es/compra-online/bebidas/zumos-de-frutas/naranja/c/W110201?q=%3Arelevance&show=All"

foreach($link in ($web.links.href | Group-Object).name){
    if ($link -match "compra-online/bebidas/zumos-de-frutas/naranja" -and $link -notmatch "/c/")
    {
        $urlsanalizar = "https://www.alcampo.es$link"
        $urlsanalizar
        
        $web = Invoke-WebRequest $urlsanalizar
 
        # Datos nutricionales del producto
        $productos = @{}
 
        # Extraer los valores nutricionales del producto
        ($web.AllElements | Where Class -eq “productNutritionalInformation valoresNutricionalesTabla”).innerHtml | %{
            ($_ -replace "</SPAN> <SPAN ","</SPAN>|<SPAN " -replace "<.*?>" -replace " g" -replace " Kj" -replace " Kcal" -split "`n" | ? {$_.trim() -ne ""} | ? {$_.trim() -notmatch "nutricionales"}).trim()
        } | %{$productos.add($_.split("|")[0],$_.split("|")[1])}
 
        $pesos = ($web.AllElements | Where Class -eq “productNutritionalInformation valoresNutricionalesTabla tablaInformacionAdicional”).innerText | %{
            ($_  -replace "<.*?>" -split "`n" | ? {$_.trim() -ne ""}).trim() -replace "g"
        }

        $nombre = ($web.AllElements | Where Class -eq “productDesc”).innerText | %{
            $_
        }
 
        # Añadir los valores nutricionales del producto a la estructura
        0..$pesos.Count | % {if($_%2-eq 0 -and $_ -lt 19){$productos.add($pesos[$_],$pesos[$_+1])}}
 
        # Calcular el valor nutricional en función de la cantidad del alimento consumido
        $comidacantidad = 100
 
        $productos.'Peso neto escurrido'
        $productos.Add('Valor energético(Kcal) Neto',($productos.'Valor energético(Kcal)' / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Hidatos de carbono Neto',($productos.'Hidratos de carbono' / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Grasas Netas',($productos.Grasas / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Grasas saturadas Netas',($productos.'Grasas saturadas' / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Azúcares Netos',($productos.Azúcares / $productos.'Peso Neto')*$comidacantidad)
        $productos.Add('Proteínas Netas',($productos.Proteínas / $productos.'Peso Neto')*$comidacantidad)
 
        # Mostrar la estructura con los valores nutricionales
        $productos.GetEnumerator() | sort -Property name

        $productosconurl.Add($nombre,$productos.Azúcares)
    }
}

$productosconurl.GetEnumerator() | Select-Object @{n='Producto';e={$_.Key}},@{n='Azúcar';e={[Double]($_.Value)}} | sort Azúcar -Descending | ConvertTo-Html | Out-File web.html

start web.html

Código web generado

<!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>Producto</th><th>Azúcar</th></tr>
<tr><td>N&#233;ctar de naranja y zanahoria AUCHAN brick de 1 litro</td><td>11,2</td></tr>
<tr><td>N&#233;ctar de naranja DON SIM&#211;N botella de 1,5 litros</td><td>10,4</td></tr>
<tr><td>N&#233;ctar de naranja ZUMOSOL brick de 1 litro</td><td>10,4</td></tr>
<tr><td>N&#233;ctar de Naranja GRANINI 33 cc</td><td>10,3</td></tr>
<tr><td>N&#233;ctar de naranja GRANINI botella de 1 litro</td><td>10,1</td></tr>
<tr><td>N&#233;ctar de naranja GRANINI botella de 1,5 litros</td><td>10,1</td></tr>
<tr><td>N&#233;ctar de naranja AUCHAN brick de 2 litros</td><td>10,1</td></tr>
<tr><td>Brick zumo exprimido de naranja sin pulpa DON SIM&#211;N 2 litros</td><td>10</td></tr>
<tr><td>Zumo de soja y naranja DON SIMON SOY brick de 1 litro</td><td>10</td></tr>
<tr><td>Zumo exprimido de naranja DON SIM&#211;N brick de 1 litro</td><td>10</td></tr>
<tr><td>Zumo exprimido de naranja sin pulpa DON SIM&#211;N brick de 12,5 centilitros pack de 4 uds.</td><td>10</td></tr>
<tr><td>Brick zumo de naranja con pulpa (100% naranja exprimida) DON SIM&#211;N 2l</td><td>10</td></tr>
<tr><td>Brick zumo de naranja DON SIM&#211;N 1l</td><td>10</td></tr>
<tr><td>Brick zumo exprimido de naranja sin pulpa DON SIM&#211;N 1 litro</td><td>10</td></tr>
<tr><td>Zumo de naranja y soja de origen 100% vegetal VIVESOY de Pascual 1 l.</td><td>9,7</td></tr>
<tr><td>Brick zumo exprimido naranja AUCHAN 1 l</td><td>9,7</td></tr>
<tr><td>N&#233;ctar de naranja MINUTE MAID botella de 1 litro</td><td>9,7</td></tr>
<tr><td>Zumo de naranja exprimido con pulpa ZUMOSOL 1 litro</td><td>9,4</td></tr>
<tr><td>Zumo exprimido de naranja sin pulpa ZUMOSOL botella de 85 centilitros</td><td>9,4</td></tr>
<tr><td>Zumo exprimido de naranja con pulpa ZUMOSOL botella de 85 centilitros</td><td>9,4</td></tr>
<tr><td>Zumo de naranja exprimida sin pulpa, ZUMOSOL, brick de un litro.</td><td>9,4</td></tr>
<tr><td>N&#233;ctar de naranja y mango GRANINI botella de 1 litro</td><td>9,2</td></tr>
<tr><td>Brick zumo de naranja dulce GRANINI 1 l</td><td>9</td></tr>
<tr><td>Zumo ecol&#243;gico de mango y naranja LAMBDA botella de 1 l.</td><td>8,9</td></tr>
<tr><td>Zumo de naranja fresca SONATURAL 250 Mililitros</td><td>8,7</td></tr>
<tr><td>Brick zumo de naranja AUCHAN 1 l</td><td>8,4</td></tr>
<tr><td>Zumo de Naranja JUVER Botella 1 l.</td><td>8,4</td></tr>
<tr><td>N&#233;ctar de naranja y zanahoria GRANINI botella de 1 litro</td><td>8,3</td></tr>
<tr><td>Zumo ecol&#243;gico de naranja LAMBDA botella de 1 l.</td><td>7,1</td></tr>
<tr><td>N&#233;ctar con stevia de naranja MINUTE MAID botella de 1 litro</td><td>5,7</td></tr>
<tr><td>N&#233;ctar de naranja JUVER 2 l.</td><td>5,6</td></tr>
</table>
</body></html>

The post Mostrar una tabla HTML con el valor nutricional (azúcares) de todos los fabricantes de productos encontrados en la tienda online de un supermercado en PowerShell appeared first on Scripting and security.

Ejecutar cmd en PowerShell

$
0
0

# No se puede iniciar "cmd". No se admiten aplicaciones de consola interactivas. Para ejecutar la aplicación, use el cmdlet Start-Process o use la opción "Inicia r PowerShell.exe" del menú Archivo. Para ver o modificar la lista de aplicaciones de consola bloqueadas, use $psUnsu pportedConsoleApplications o consulte la ayuda en pantalla. At line:0 char:0
cmd
# Ejecutar dir en cmd desde PowerShell
cmd /c dir

The post Ejecutar cmd en PowerShell appeared first on Scripting and security.

Viewing all 237 articles
Browse latest View live