PowerShell para usuarios domésticos: una guía para principiantes - 3 - diciembre 12, 2022

PowerShell para usuarios domésticos: una guía para principiantes

¿Quién no desearía poder ser un mago y pronunciar unas pocas palabras para que sucedan cosas mágicas? Bueno, no pudimos mostrarte cómo ser un mago, pero podemos mostrarte cómo hacer un poco de magia informática.

Si tiene una computadora Windows con Windows 7, tiene PowerShell. Además, si tiene una computadora con Windows 7, actualícela por motivos de seguridad.

PowerShell para usuarios domésticos: una guía para principiantes - 5 - diciembre 12, 2022

Pero este artículo no es solo para gente de Windows. La última versión de PowerShell es gratuita y se puede instalar y usar en computadoras Mac y Linux.

Eso es importante porque lo que aprende sobre PowerShell ahora se puede usar en casi cualquier computadora. ¿Quién sabe? Puede llevar esta habilidad al siguiente nivel y aventurarse en una carrera en tecnología de la información.

¿Qué es PowerShell?

La respuesta de alta tecnología de Microsoft es que es un shell de línea de comandos diseñado especialmente para administradores de sistemas. Suena intimidante. Pero no lo es. ¿Cuidas tu computadora? Sí, entonces eres el administrador del sistema en tu casa.

¿Le dices a tu computadora qué hacer con los clics y las pulsaciones de teclas? Sí, piense en el shell de la línea de comandos como otra ventana en la que escribe cosas para decirle a su computadora qué hacer. Puedes hacerlo.

PowerShell es como un lenguaje de programación, pero no tan críptico como la mayoría. Realmente se parece mucho al inglés normal, que era algo por lo que Microsoft se esforzó para que los no programadores pudieran aprenderlo.

Es una forma de escribir unas pocas líneas de comandos, llamado script, para hacer que el sistema operativo Windows haga algo que usted quiere que haga. Luego, puede guardar esas líneas en un archivo y ejecutarlo con un clic o programarlo para que se ejecute periódicamente.

¿Qué puede hacer con PowerShell?

El punto de alto nivel de PowerShell es poder automatizar tareas, por lo que no tiene que perder el tiempo haciendo cosas mundanas repetidamente. Para un administrador de sistemas profesional, eso podría ser algo así como crear nuevos usuarios, generar contraseñas para ellos y enviar un correo electrónico con los detalles a su nuevo supervisor.

Hecho manualmente, con clics y escribiendo, ese proceso puede tomar de 5 minutos a una hora o más. Con los scripts correctos, es posible que el administrador de sistemas ni siquiera tenga que hacer nada de eso.

Pero quiere saber qué puede hacer con PowerShell en casa. Prácticamente cualquier cosa que no te guste hacer una y otra vez. Úselo para liberar espacio en su disco duro eliminando archivos temporales y de registro que no necesita.

Ponga un toque de queda en la computadora de sus hijos. Renombra u organiza un montón de archivos. Esa es la belleza de PowerShell. Casi todo lo que puede hacer en su computadora, puede crear un script de PowerShell para automatizar y ejecutar con un clic o en un horario.

¿Cómo uso PowerShell?

La forma más sencilla de trabajar con PowerShell es en el entorno de scripting integrado (ISE) de PowerShell. Puede encontrarlo haciendo clic en Inicio y escribiendo powershell ise en la barra de búsqueda de Windows 10. Debería verlo como se muestra a continuación.

PowerShell para usuarios domésticos: una guía para principiantes - 7 - diciembre 12, 2022

Por primera vez que lo usamos, lo vamos a ejecutar como administrador. Para hacer esto, primero debe tener derechos de administrador en su computadora. En el menú de inicio, haga clic con el botón derecho en PowerShell ISE y, a continuación, haga clic en ejecutar como administrador.

PowerShell para usuarios domésticos: una guía para principiantes - 9 - diciembre 12, 2022

Es posible que reciba una ventana emergente de advertencia de Control de acceso de usuario (UAC) que le pregunte si está seguro de que desea hacer esto. Haga clic en Sí.

PowerShell para usuarios domésticos: una guía para principiantes - 11 - diciembre 12, 2022

Ahora está viendo el IDE de PowerShell. El panel superior de la ventana (1) es el panel de secuencias de comandos. Aquí es donde escribirás tu guión. El panel inferior de la ventana (2) es el área de la consola. Cuando pruebe su secuencia de comandos, verá el resultado en este panel.

Aquí también es donde verás mensajes de error que te ayudarán a corregir y mejorar tus scripts. El panel en el lado derecho de la ventana (3) es el complemento de comando. Piense en ello como un diccionario de todos los comandos de PowerShell disponibles para usted.

PowerShell para usuarios domésticos: una guía para principiantes - 13 - diciembre 12, 2022

PowerShell viene configurado para no ejecutar ningún script que no sea el que ya forma parte de Windows. Deberá cambiarlo para que pueda ejecutar sus propios scripts.

En la ventana de secuencias de comandos, copie y pegue lo siguiente:

 Establecer-ExecutionPolicy -ExecutionPolicy RemoteSigned

La parte Set-ExecutionPolicy se llama cmdlet (pronunciado commandlet). Los cmdlets son cosas poderosas. Piense en ellos como comandos cortos que puede dar a Windows, y Windows hará un montón de cosas más complicadas para satisfacer su comando.

Una analogía sería decirle a su hijo que limpie su habitación. Corto y al grano. Si su hijo está bien versado en la limpieza de habitaciones, entonces irá y hará su cama, pondrá su ropa en la canasta, guardará sus juguetes y libros, y tal vez incluso aspirará el piso. Entienden que el cmdlet Clean-YourRoom significaba todo eso.

En la parte superior de la ventana, verá una punta de flecha verde. Haga clic en ella para ejecutar el comando.

PowerShell para usuarios domésticos: una guía para principiantes - 15 - diciembre 12, 2022

La parte -ExecutionPolicy le dice a Set-ExecutionPolicy qué política establecer. Es un parámetro. Está diciendo, quiero que trabajes dentro de estas pautas y hagas específicamente esto. Le dice que use la política específica de RemoteSigned.

La política de RemoteSigned establece que PowerShell no puede ejecutar ningún script que se descargó de Internet a menos que esté firmado por un editor de confianza.

De forma indirecta, le dice a PowerShell que está bien ejecutar cualquier script creado localmente, porque no es necesario que estén firmados por un editor de confianza remoto. Ahora, su secuencia de comandos de PowerShell podrá ejecutar cualquier secuencia de comandos que escriba en su computadora.

Veamos un script para eliminar archivos temporales. No es tan poderoso ni completo como CCleaner, pero CCleaner viene con su propio conjunto de problemas.

Use PowerShell para crear espacio en su disco duro

Bueno, analice este script, línea por línea, para que pueda ver cómo funciona. Al final, el script se mostrará completo para que puedas copiarlo y pegarlo si lo deseas.

 $TempFileLocation = "C:UsersusernameAppdataLocalTemp*"

Cualquier cosa que tenga un signo de dólar delante es un nombre de variable. Piense en ello como una billetera para guardar cosas valiosas. La billetera nos recuerda el signo de dólar, los objetos de valor suenan como variables, así que recuérdelo también. Estamos creando una billetera, o variable, llamada $TempFileLocation. El signo igual le dice a PowerShell qué poner en esa variable.

En este caso, estamos colocando la ubicación de una ubicación de archivos temporales de Windows C:UsersusernameAppDataLocalTemp* . Estamos haciendo esto por dos razones; es una ubicación desde la que siempre es seguro eliminar archivos, y la usaremos para decirle a PowerShell dónde debe ir para eliminar archivos.

Donde dice nombre de usuario en esa ubicación, cámbielo por su nombre de usuario. Ese es el nombre de usuario que utiliza para iniciar sesión en su computadora. El asterisco (*) al final es un comodín. Lo que representa es todo lo que está en la carpeta Temp, porque todo lo que está en la carpeta Temp es temporal y queremos eliminarlo.

Las comillas dobles alrededor de la ubicación también son importantes. Eso le dice a PowerShell que lo que hay allí es una cadena. Piense en una cadena como una cadena de letras y caracteres. Si fueran números ordinarios, no usaríamos las comillas.

 $TempFile = Get-ChildItem $TempFileLocation -Recurse

Estamos haciendo otra variable. Esta vez vamos a usar un comando para pensar en algo para poner en la variable $TempFile.

 Obtener elemento secundario

Otra cosa que notará acerca de cmdlets como Get-ChildItem es que es totalmente legible. ¿Ves cómo la primera palabra es un verbo? Todos los cmdlets comienzan con palabras de acción, por lo que inmediatamente sabe lo que está haciendo. ChildItem son dos sustantivos.

La segunda parte del cmdlet siempre nos dirá a qué PowerShell aplicará la acción. ChildItem significa todos los elementos secundarios de una ubicación principal. Esto es como decir obtener todos los archivos que están en una carpeta, siendo los archivos los hijos y la carpeta el padre.

¿De qué está obteniendo el cmdlet los elementos secundarios? Todo en la variable $TempFileLocation. PowerShell irá a la ubicación que colocamos anteriormente en $TempFileLocation y obtendrá todos los elementos secundarios que se encuentran allí. Luego, los pondrá en la variable $TempFile.

Entonces, ¿qué pasa con la parte -Recurse? Eso le dice a Get-ChildItem que revise todo en esa ubicación. No se limite a obtener los archivos inmediatamente dentro de la carpeta principal. Si hay carpetas en esa carpeta, obtenga todos sus hijos también, y sus hijos y así sucesivamente. Iba a conseguirlos todos.

 $TempFileCount = ($TempFile).cuenta

Sí, estábamos creando una tercera variable llamada $TempFileCount y íbamos a poner un número en esa variable. ¿Dónde está el número? Bueno, ($TempFile).count nos dará ese número. Probablemente se haya dado cuenta de que la parte .count hará el conteo de todos los archivos que acabamos de almacenar en $TempFile.

¿Por qué hicimos esto? Principalmente porque es bueno saber cuántos archivos inútiles se limpiaron con el resto del script para que podamos saber qué tan efectivo fue.

 Si ($TempFileCount -eq 0)

Ahora estamos configurando una declaración condicional. Puedes ver que está preguntando si. ¿Si que? Si lo que está entre paréntesis es verdadero o falso. Los paréntesis son importantes, de lo contrario, el If no sabe qué comparar. Aquí, pregunta si el número que almacenamos en $TempFileCount es igual a cero.

El -eq es la abreviatura de iguales. Es un tipo de operador de comparación. Es como decirle a sus hijos, si su habitación está limpia, genial, vamos a hacer algo. Esta declaración dice que si el número que se almacenó en $TempFileCount es igual a cero, haga lo siguiente.

 {Write-Host "No hay archivos en la carpeta $TempFileLocation" -ForegroundColor Green}

Eso es lo que sucederá si $TempFileCount es cero. Los corchetes son importantes. Le dicen a PowerShell que haga solo lo que está dentro de ellos si $ TempFileCount es igual a cero.

Escribirá en el host o en la pantalla. No hay archivos en la carpeta C:UsersusernameAppdataLocalTemp*. El parámetro al final, ForegroundColor, le dice a PowerShell que haga que el texto sea verde. Eso solo hace que sea más fácil distinguirlo de un mensaje de error que normalmente es rojo.

 Más

Ya sabes qué más significa. Es mejor que su habitación esté limpia o, de lo contrario, es parte de verificar si su hijo limpió su habitación. Es lo que sucederá si $TempFileCount no es cero.

 {$TempFile | Remove-Item -WhatIf -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue}

Esto dice ir a la ubicación actual almacenada en $TempFile. La línea vertical que sigue se llama tubería. Funciona como una tubería de la vida real, ya que le dice a PowerShell que canalice el contenido de $TempFile hacia el cmdlet, como si fuera agua que se canaliza a una lavadora. Luego, el cmdlet Remove-Item hace lo que dice; elimina lo que sea que esté en esa ubicación.

El parámetro -WhatIf es muy importante en esta etapa. Le dice a PowerShell que ejecute el comando, pero solo pruébelo, no elimine nada. Solo muéstranos qué pasaría si realmente hiciéramos esto.

Esto le permite probar los comandos sin cambiar nada en su computadora. Deje el -WhatIf allí hasta que esté seguro de que el script hará lo que usted quiere que haga y nada más. Luego simplemente elimínelo y el script hará su trabajo.

PowerShell para usuarios domésticos: una guía para principiantes - 17 - diciembre 12, 2022

El parámetro -Confirm:$false evita que el script pregunte si realmente desea eliminar el archivo. Ya sabes lo que hace -Recurse. -Forzar significa eliminar esa cosa sin importar qué. –WarningAction se establece en SilentlyContinue .

Esto evita que el script le avise sobre lo que está eliminando. –ErrorAction está configurado en SilentlyContinue para que, si hay algún tipo de error en el proceso, siga avanzando.

Ahora estaban en la última línea.

 Write-Host "Borró los archivos $TempFileCount en la carpeta $TempFileLocation" -ForegroundColor Green}

Tal como lo hizo Write-Host la primera vez, generará la siguiente oración, para que sepamos lo que sucedió. Nos dirá cuántos archivos se eliminaron de la carpeta que acaba de procesar y lo hará en verde para que sea más fácil de detectar.

Veamos el guión por completo:

 $TempFileLocation = "C:UsersguymcdAppdataLocalTemp*"
$TempFile = Get-ChildItem $TempFileLocation -Recurse
$TempFileCount = ($TempFile).cuenta

If($TempFileCount -eq "0") {
Write-Host "No hay archivos en la carpeta $TempFileLocation" - ForegroundColor Green
}
Más {
$TempFile | Remove-Item -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
Write-Host "Borró los archivos $TempFileCount en la carpeta $TempFileLocation" -ForegroundColor Green
}

Puede copiar y pegar esto en su PowerShell ISE y guardarlo como algo como delete-TemporaryFiles.ps1. También puede ceñirse a la convención de nomenclatura de los cmdlets ahora que los comprende.

Si el código no funciona para usted por algún motivo, también puede descargar el script de PowerShell que creamos y simplemente ejecutarlo. Simplemente descomprímalo primero para ver el archivo de script.

Siempre que desee ejecutar este script, simplemente haga clic derecho sobre él y elija ejecutar con PowerShell. Aparecerá una consola de PowerShell durante uno o dos segundos, mientras su secuencia de comandos hace lo suyo, y luego desaparecerá si no hay errores.

PowerShell para usuarios domésticos: una guía para principiantes - 19 - diciembre 12, 2022

¿Dónde puedo obtener más información sobre PowerShell?

¡Eso parece mucho! Para su primer script de PowerShell es bastante. Si has llegado hasta aquí, aplaudete. Has aprendido mucho hoy, pero ahora quieres aprender más. ¡Eso es genial!

Hay muchos recursos en Internet para obtener más información sobre PowerShell. Un buen lugar para comenzar es nuestro artículo, Generar una lista de programas de inicio a través de la línea de comandos o PowerShell. Entonces echa un vistazo a estos otros recursos:

  • Primeros pasos con Microsoft PowerShell Microsoft Virtual Academy
  • Tutorial de PowerShell TutorialsPoint.com