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

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

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

Pero este artículo no es solo para usuarios 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(Information Technology) 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(” Sounds) 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í, así que piense en el shell de la línea de comandos como una ventana más 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 lee mucho como el inglés(English) regular , que era algo por lo que Microsoft se esforzó para que pudiera ser adoptado por personas que no son programadores.

Es una forma de escribir unas pocas líneas de comandos, llamada secuencia de comandos, 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, para que no tenga que perder el tiempo haciendo cosas mundanas repetidamente. Para un administrador de sistemas(Systems Administrator) 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 llevar de 5 minutos a una hora o más. Con los scripts correctos, es posible que el administrador de sistemas(Systems Administrator) 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 su hijo. Renombra(Rename) u organiza un montón de archivos. Esa es la belleza de PowerShell . Casi(Almost) 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.(PowerShell)

¿Cómo uso PowerShell?

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

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

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

Ahora está viendo el IDE de PowerShell(PowerShell IDE) . 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)

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

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

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

La parte Set-ExecutionPolicy se llama cmdlet (pronunciado commandlet). Los cmdlets son cosas poderosas. Piense(Think) 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(Short) 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(Click) en eso para ejecutar el comando.

La parte -ExecutionPolicy le dice a Set-ExecutionPolicy qué política establecer. Es un parámetro. Es decir, “Quiero que trabajes dentro de estas pautas y hagas esto especÃficamente. 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 secuencia de comandos creada localmente, porque no es necesario que estén firmadas por un editor remoto de confianza. 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(Create Space) en su disco duro(Your Hard Drive)

Desglosaremos 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:\Users\username\Appdata\Local\Temp\*"

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(Wallet) nos recuerda el signo de dólar, los objetos de valor suenan como variables, así que también lo recordaremos. 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 los archivos temporales de Windows C:\Users\username\AppData\Local\Temp\* . 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(Think) 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 encontrar algo que poner en la variable $TempFile .

Get-ChildItem 

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(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 en $ TempFileLocation anteriormente 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 es decirle a Get-ChildItem que revise todo en esa ubicación. No busque los archivos inmediatamente dentro de la carpeta principal. Si hay carpetas en esa carpeta, obtenga todos sus elementos secundarios también, y sus elementos secundarios y así sucesivamente. Los vamos a conseguir todos.

$TempFileCount = ($TempFile).count

Sí, estamos creando una tercera variable llamada $TempFileCount y vamos 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 estamos limpiando con el resto del script para que podamos saber qué tan efectivo fue.

if($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 decirles a sus hijos: "Si su habitación está limpia, genial, vamos a hacer algo...". Esta declaración dice si el número que se almacenó en $ TempFileCount es -igual a cero. La siguiente cosa.

{Write-Host "There are no files in the folder $TempFileLocation" -ForegroundColor Green}

Eso es lo que ocurrirá 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:\Users\username\Appdata\Local\Temp\*". 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.

Else

Ya sabes qué más significa. Esta es la parte de "Es mejor que tu habitación esté limpia o de lo contrario..." para verificar si tu 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(Just) 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 va a hacer lo que usted quiere que haga y nada más. Luego simplemente elimínelo y el script hará su trabajo.

El parámetro -Confirm:$false evita que el script pregunte si realmente desea eliminar el archivo. Ya sabes lo que hace -Recurse . -Forzar( -Force) 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 estamos en la última línea.

Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green}

Al igual que 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 completo:

$TempFileLocation = "C:\Users\guymcd\Appdata\Local\Temp\*"
$TempFile = Get-ChildItem $TempFileLocation -Recurse
$TempFileCount = ($TempFile).count

if($TempFileCount -eq "0") {
Write-Host "There are no files in the folder $TempFileLocation" - ForegroundColor Green
}
Else {
$TempFile | Remove-Item -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
Write-Host "Cleared $TempFileCount files in the folder $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(Just) 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(Run with 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.

¿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(Generate a List of Startup Programs via Command Line or PowerShell) ". Entonces echa un vistazo a estos otros recursos:



About the author

Soy un ingeniero de software de tiempo completo con más de 10 años de experiencia trabajando con software de Windows y Mac. Sé cómo diseñar, probar y desplegar aplicaciones en ambas plataformas. También tengo experiencia en seguridad y administración de sistemas. Mis habilidades y conocimientos pueden ayudarlo a construir un sistema informático mejor y más eficiente.



Related posts