Powershell: 4 divertidos scripts para aprender a usarlo

Powershell es un símbolo del sistema, pero también un lenguaje de programación que permite automatizar tareas, ordenar cantidades asombrosas de datos sobre la marcha, ¡pero también divertirse! En este archivo le mostramos cuatro ejemplos de scripts divertidos y bastante útiles, al menos para aprender a domar el nuevo Símbolo del sistema.

Powershell ahora reemplaza al clásico Símbolo del sistema (cmd) por defecto desde la actualización de Windows 10 Creators Update. Este programa permite hacer todo lo que podría hacer Cmd, pero también permite tanto a los desarrolladores experimentados como a los codificadores en ciernes crear pequeños scripts por curiosidad o para codificar realmente y simplificar su uso del ordenador. Hemos intentado mostrarte unos cuantos guiones que son instructivos y divertidos.

Comentarios

Powershell: el bucle estrella

Este pequeño guión es una introducción a los bucles. Cópialo y ejecútalo en una ventana de Powershell para ver el resultado directamente:

$i=»*»

C {

$i=»$i*»

While ($true)

Ahora puedes ver por qué llamamos a este bucle el «bucle de la estrella». Para interrumpir el programa escriba Ctrl + C en su teclado. Este pequeño código es bastante divertido, pero puede hacer cosas más útiles. Por ejemplo, puedes sustituir la estrella por lo que quieras. Pero también otros elementos, incluso números:

$i=1

C {

$i++

Mientras ($i -el 10)

El bucle mostrará entonces el número contenido en $1 y sumará 1 siempre que el valor de $i sea menor que 10 (de ahí el $i -el 10 al final, -que significa lesser o menos que en inglés). También es posible transformar esto en una cuenta atrás sustituyendo el ++ junto a $i, que habrás entendido que es una variable, por un –. También tienes que cambiar el valor inicial a 10, y poner 0 al final si quieres tener una cuenta atrás tipo cohete.

Instagram: todos los consejos esenciales para usarlo bien

Y si quieres que cada iteración se renderice más lentamente, por ejemplo que cada número se muestre con un segundo de diferencia, entonces puedes añadir un comando para pausar el programa durante un número determinado de milisegundos en cada bucle:

$i=10

C {

$i–

Start-Sleep -m 1000

Mientras ($i -ge 0)

Por último, si quieres añadir un pitido a cada ejecución del trocito de código en el bucle, añade [console]::beep(440,100) donde 440 es la frecuencia en Hz del sonido (es una A) y 100 es el tiempo de reproducción. Esto da el siguiente código:

$i=10

C {

$i–

Start-Sleep -m 1000

Mientras ($i -ge 0)

Ten en cuenta que en el caso de la cuenta atrás, el While (as long as…) no puede reproducir el bucle mientras el valor de $i sea «menor que 0», ya que el valor de $i empieza en 10. Así que tienes que sustituir en la última línea -le por -ge que significa «mayor que».

Hacer música con Powershell

¿Y si te decimos que puedes hacer música con Powershell? Una de las formas más divertidas de aprender el lenguaje de programación Powershell es programar música. Copie el código de las canciones directamente en una ventana de Powershell y escriba Introducirpara ejecutarlas.

«La marcha imperial»

«Misión Imposible»

# Start-Sleep -m 300 #

Inicio-Sueño -m 300

Inicio-Sueño -m 150

Inicio-Sueño -m 150

Inicio-Sueño -m 300

Inicio-Sueño -m 300

Inicio-Sueño -m 150

Inicio-Sueño -m 150

Inicio-Sueño -m 300

Inicio-Sueño -m 300

Inicio-Sueño -m 150

Inicio-Sueño -m 150

Inicio-Sueño -m 300

Inicio-Sueño -m 300

Inicio-Sueño -m 150

Inicio-Sueño -m 150

Start-Sleep -m 75

Start-Sleep -m 75

Start-Sleep -m 150

Haz tu propia creación

Como puedes ver al descomprimir el comando tenemos [console]::beep con dos dígitos entre paréntesis. El número de la izquierda es la frecuencia del sonido (por ejemplo, 440 Hz para un A), y el número de la derecha es la duración del sonido (en milisegundos). En Misión Imposible también puedes ver que los sonidos se intercalan con el comando Start-Sleep -m 150, que significa «no hagas nada más durante X ms»: ¡perfecto para introducir descansos! Es tu turno, ¡no dudes en compartir tus creaciones en los comentarios!

Google Fotos: cómo hacer una copia de seguridad de todas tus fotos en la nube

Haz que Powershell hable

También es posible transformar el texto en voz directamente en Powershell. Para ello, primero debes cargar el módulo de texto a voz ejecutando este comando, y luego crear un nuevo objeto $speak para simplificar su uso. Todo esto es bastante sencillo, copie las siguientes dos líneas y ejecútelas en Powershell:

Añadir-Tipo -NombreDelSistema.discurso

$speak = Nuevo-Objeto System.Speech.Synthesis.SpeechSynthesizer

A continuación, puede hacer que el sintetizador de voz Powershell hable:

$speak.Speak(«Le doy mi lengua al gato»)

Incluso es posible transformar tus frases en un archivo WAV sobre la marcha. Para ello, tienes que abrir/empezar a guardar tu archivo en el disco duro modificando el siguiente comando y ejecutándolo. A continuación, «cierra» el archivo una vez que hayas terminado con otro comando para poder reproducirlo en el programa de tu elección:

$speak.SetOutputToWaveFile(«C:usersLEVELSCHEMISQUEEVOUSAUREZCHOISItest.wav»)

A continuación, ejecute algunos $speak.Speak() que contengan frases que desee convertir en síntesis de voz, y luego ejecute este comando para cerrar el archivo:

$speak.Dispose()

Si no te gusta la voz, puedes comprobar la lista de voces instaladas ejecutando el comando :

$speak.GetInstalledVoices().VoiceInfo

Copia el nombre de la voz y pégalo en este comando para cambiarlo:

$speak.SelectVoice(‘LA VOZ QUE HA ELEGIDO’)

Poner en orden el escritorio de Windows 10 con un script

Este pequeño script que viene de Reddit (¡gracias a u/Zazierx!) es tan práctico que no podemos resistirnos a compartirlo con vosotros. Permite tanto aprender sobre operadores condicionales (el código es relativamente claro y fácil de leer) como organizar el escritorio de Windows 10 en carpetas por tipo de archivo. Copie y pegue el siguiente código en una ventana de Powershell y ejecútelo:

$pathToUse = «C:N- Usuarios$env:nombredeusuarioEscritorio»

Test de velocidad: cómo medir la velocidad de tu conexión a Internet

$video = @(

‘3g2′,’3gp’,’3gpp’,’asf’,’avi’,’divx’,’f4v’,

flv’,’h264′,’ifo’,’m2ts’,’m4v’,’mkv’,’mod’,’mov’,

mp4′,’mpeg’,’mpg’,’mswmm’,’mts’,’mxf’,’ogv’,’rm’,

srt’,’swf’,’ts’,’vep’,’vob’,’webm’,’wlmp’,’wmv’

$hojas de cálculo = @(

csv’,’ods’,’xls’,’xlsx’

$imágenes = @(

arw’,’bmp’,’cr2′,’crw’,’dcm’,’dds’,’djvu’,

dmg’,’dng’,’fpx’,’gif’,’ico’,’ithmb’,’jp2′,’jpeg’,

jpg», «nef», «nrw», «orf», «pcd», «pict», «png», «psd»,

sfw’,’tga’,’tif’,’tiff’,’webp’,’xcf’

$presentaciones = @(

key’,’odp’,’pps’,’ppsx»ppt’,’pptm’,’pptx’

$docs = @(

chm’,’doc’,’docm’,’docx’,’dot’,’dotx’,’eml’,’eps’,

hwp’,’log’,’m3u’,’odt’,’pages’,’pdf’,’pub’,’rtf’,

$cadFiles = @(

dwg’, ‘dxf’

$misc = @(

bin’,’cda’,’dat’,’dll’,’exe’,’isc’,

‘img’,’inf’,’ipa’,’kmz’,’lnk’,’pes’,

‘ps’,’rem’,’torrent’,’ttf’,’vcf’

$ebooks = @(

‘azw’,’azw3′,’epub’,’fb2»lit’,’lrf’,’mbp’,’mobi’,

opf’,’prc’

$web = @(

‘css’,’htm’,’html’,’js’,’json’,’php’

$arcs = @(

‘7z’,’apk’,’bz2′,’cbr’,’gz’,’gzip’,’jar’,’rar’,

‘tar’,’tgz’,’zip’,’war’

$scripts = @(

‘bat’,’cmd’,’vb’,’vbs’,’vbe’,’js’,

‘jse’,’ws’,’wsf’,’wsc’,’wsh’,’ps1′,

‘ps1xml’,’ps2′,’ps2xml’,’psc1′,’psc2′,’sql’

$files = Get-ChildItem -Path $pathToUse

Foreach ($x in $files){

if($docs.Contains($x.Extension.TrimStart(‘.’).ToLower())){574#

Nuevo-artículo -TipoDeDirectorio -Ruta $rutaDeUso -Nombre «Documentos» -AcciónDeErrorIgnorar

Move-Item -Ruta $x.FullName -Destino $rutaUso/»Documentos»

elseif($spreadsheets.Contains($x.Extension.TrimStart(‘.’).ToLower())){

Nuevo-elemento -TipoDeDirectorio -Ruta $rutaDeUso -Nombre «HojasDePreparación» -AcciónDeErrorIgnorar

Mover-elemento -Ruta $x.NombreCompleto -Destino $rutaUso/»Hojas de cálculo»

elseif($images.Contains($x.Extension.TrimStart(‘.’).ToLower())){

New-Item -ItemType Directory -Path $pathToUse -Name «Images» -ErrorAction Ignore

Move-Item -Ruta $x.FullName -Destino $rutaUso/»Imágenes»

elseif($presentaciones.Contains($x.Extensión.TrimStart(‘.’).ToLower())){

Nuevo-artículo -TipoDeDirectorio -Ruta $rutaDeUso -Nombre «Presentaciones» -AcciónDeErrorIgnorar

Move-Item -Ruta $x.FullName -Destino $rutaUso/»Presentaciones»

elseif($video.Contains($x.Extension.TrimStart(‘.’).ToLower())){

New-Item -ItemType Directory -Path $pathToUse -Name «Videos» -ErrorAction Ignore

Move-Item -Ruta $x.FullName -Destino $rutaUso/»Videos»

elseif($cadFiles.Contains($x.Extension.TrimStart(‘.’).ToLower())){

New-Item -ItemType Directory -Path $pathToUse -Name «CAD Files» -ErrorAction Ignore

Move-Item -Ruta $x.FullName -Destino $rutaUso/»Archivos CAD»

elseif($misc.Contains($x.Extension.TrimStart(‘.’).ToLower())){

New-Item -ItemType Directory -Path $pathToUse -Name «Misc» -ErrorAction Ignore

Move-Item -Ruta $x.FullName -Destino $rutaUso/»Misc»

elseif($ebooks.Contains($x.Extension.TrimStart(‘.’).ToLower())){

Nuevo-elemento -TipoDeArchivo -Ruta $rutaDeUso -Nombre «Libros-E» -AcciónDeErrorIgnorar

Mover-elemento -Ruta $x.NombreCompleto -Destino $rutaAUsar/»E-Libros»

elseif($web.Contains($x.Extension.TrimStart(‘.’).ToLower())){

Nuevo-elemento -TipoDeDirectorio -Ruta $rutaDeUso -Nombre «Web» -AcciónDeErrorIgnorar

Mover-elemento -Ruta $x.NombreCompleto -Destino $rutaAUsar/»Web»

elseif($arcs.Contains($x.Extension.TrimStart(‘.’).ToLower())){

Nuevo-elemento -TipoDeDirectorio -Ruta $rutaDeUso -Nombre «Archivos» -AcciónDeErrorIgnorar

Mover-elemento -Ruta $x.NombreCompleto -Destino $rutaAUsar/»Archivos»

elseif($scripts.Contains($x.Extension.TrimStart(‘.’).ToLower())){

Nuevo-elemento -TipoDeDirectorio -Ruta $rutaDeUso -Nombre «Scripts» -AcciónDeErrorIgnorar

Mover-elemento -Ruta $x.NombreCompleto -Destino $rutaAUsar/»Scripts»

elseif($x.Directorio){

Nuevo-artículo -Tipo de artículo Directorio -Ruta $rutaAUsar -Nombre «Otros – misc» -AcciónError Ignorar

Mover-elemento -Ruta $x.NombreCompleto -Destino $rutaAUsar/»Otros – misc»

si no{

Write-Host $x

Con unos pequeños cambios, puede organizar cualquier carpeta sin esfuerzo. ¿Conoces algún otro script de Powershell divertido? Compártalas en los comentarios de este artículo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.