¿Quién no desea ser un mago y pronunciar algunas palabras para que sucedan cosas mágicas? Bueno, no podemos mostrarle cómo ser un mago, pero podemos mostrarle cómo hacer un poco de magia informática.
Si tienes una computadora con Windows 7 con Windows 7, tienes PowerShell. Además, si tiene una computadora con Windows 7, actualícela por razones de seguridad.
Pero este artículo no es solo para la 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 se puede usar en casi cualquier computadora ahora. ¿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 dice a su computadora qué hacer con los clics y las pulsaciones de teclas? Sí, entonces piense en la línea de comandos como otra ventana en la que escribe cosas para decirle a su computadora qué hacer. Puede hacer esto.
In_content_1 all: [300x250] / dfp: [640x360]->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, llamados scripts, 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 capaz de automatizar tareas, para que no tenga que perder su tiempo haciendo cosas mundanas repetidamente. Para un administrador de sistemas profesional, eso podría ser algo 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 mecanografía, ese proceso puede llevar 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 desea 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 toque de queda en la computadora de su hijo. Cambiar el nombre u organizar un montón de archivos. Esa es la belleza de PowerShell. Casi cualquier cosa que pueda 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 fácil de trabajar con PowerShell es en el entorno de secuencias de comandos integradas de PowerShell (ISE). Puede encontrarlo haciendo clic en Inicio y escribiendo powershell iseen la barra de búsqueda de Windows 10. Debería verlo como se muestra a continuación.
Por primera vez que lo usemos, lo ejecutaremos como Administrador. Para hacer esto, primero debe tener derechos de administrador en su computadora. En su Menú de inicio, haga clic con el botón derecho en PowerShell ISE, luego haga clic en Ejecutar como administrador.
Puede obtener un
Ahora estás 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 verá los mensajes de error que le ayudarán a corregir y mejorar sus secuencias de comandos. 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 viene configurado para no ejecutar ningún script que no sea parte de Windows. Deberá cambiarlo para poder ejecutar sus propios scripts.
En la ventana de scripts, copie y pegue lo siguiente:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
El
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 la habitación, entonces irá y hará su cama, pondrá su ropa en la canasta, guardará sus juguetes y libros, y tal vez incluso pasar la aspiradora por el piso. Entienden que el cmdlet Clean-YourRoom significa todo eso.
En la parte superior de la ventana, verá una punta de flecha verde. Haga clic en eso para ejecutar el comando.
El - La parte ExecutionPolicyle dice a Set-ExecutionPolicyqué política establecer. Es un parámetro Dice: "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 RemoteSignedestablece que PowerShell no puede ejecutar ni ejecutar ningún script que se haya descargado de Internet a menos que haya sido firmado por un editor de confianza.
De manera indirecta, le dice a PowerShell que está bien ejecutar cualquier script creado localmente, porque no es necesario que los firme un editor de confianza remoto. Ahora, su script de PowerShell podrá ejecutar cualquier script 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
Desglosaremos este script, línea por línea, para que pueda ver cómo funciona. Al final, el script se mostrará por completo para que pueda copiarlo y pegarlo si lo desea.
$TempFileLocation = "C:\Users\username\Appdata\Local\Temp\*"
Cualquier cosa con un signo de dólar delante es un nombre variable . Piense en ello como una billetera para poner cosas valiosas. La billetera nos recuerda el signo del dólar, los objetos de valor suenan como variables, por lo 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, colocamos 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 que siempre es segura para 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ámbiela por su usuario nombre. Ese es el nombre de usuario que usa para iniciar sesión en su computadora. El asterisco (*) al final es un comodín. Lo que representa es todo en la carpeta Temp, porque todo 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 la cadena como una cadena de letras y caracteres. Si se tratara de 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 para poner en la variable $ TempFile.
Get-ChildItem
Otra cosa que usted hará Nota sobre cmdlets como Get-ChildItemes que es totalmente legible. ¿Ves cómo la primera palabra es un verbo? Todos los cmdlets comienzan con palabras de acción, para que sepa de inmediato lo que está haciendo. ChildItem es dos sustantivos.
La segunda parte del cmdlet siempre nos dirá a qué PowerShell aplicará la acción. ChildItem significa todos los hijos 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 los padres.
¿De qué está recibiendo el cmdlet los elementos hijos? Todo en la variable $ TempFileLocation. PowerShell irá a la ubicación que pusimos en $ TempFileLocation anteriormente y obtendrá todos los elementos secundarios que están allí. Luego, los colocará en la variable $ TempFile.
Entonces, ¿qué pasa con la parte -Recurse? Eso le dice a Get-ChildItemque revise todo en esa ubicación. No solo vaya a buscar los archivos inmediatamente dentro de la carpeta principal. Si hay carpetas en esa carpeta, obtenga también todos sus hijos, y sus hijos, etc. 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) .countnos dará ese número. Probablemente hayas descubierto que la parte .count hará el recuento 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 decir cuán efectivo fue.
if($TempFileCount -eq 0)
Ahora estamos configurando una declaración condicional. Puedes ver que está preguntando "si". ¿Si que? Si la cosa entre paréntesis es verdadera o falsa. Los corchetes son importantes, de lo contrario, el If no sabe qué comparar. Aquí, se pregunta si el número que almacenamos en $ TempFileCountes igual a cero.
El -eqes 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, haremos algo ..." Esta declaración dice si el número que estaba almacenado en $ TempFileCount es -equual a cero, haga lo siguiente.
{Write-Host "There are no files in the folder $TempFileLocation" -ForegroundColor Green}
Eso es lo que sucederá si $ TempFileCountes cero. Los corchetes son importantes. Le dicen a PowerShell que haga solo lo que está dentro de ellos si $ TempFileCount es igual a cero.
Se 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, - ForegroundColorle dice a PowerShell que haga que el texto sea verde. Eso hace que sea más fácil distinguirlo de un mensaje de error que normalmente es rojo.
Else
Sabes qué más significa. Esta es la parte de "Tu habitación mejor que esté limpia o si no ..." para verificar si tu hijo limpió su habitación. Es lo que sucederá si $ TempFileCountno 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 después de que se llama una tubería. Funciona como una tubería de la vida real, ya que le dice a PowerShell que canalice el contenido de $ TempFile en el cmdlet, como si se tratara de agua en una lavadora. Luego, el cmdlet Remove-Itemhace lo que dice; elimina todo lo que hay en ese lugar.
El parámetro -WhatIfes 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 comandos sin cambiar nada en su computadora. Deje el -WhatIf allí hasta que se sienta cómodo de que el script hará lo que quiere que haga y nada más. Luego, simplemente elimínelo y el script hará su trabajo.
El parámetro -Confirm: $ falseimpide que el script le pregunte si realmente desea eliminar el archivo. Ya sabes lo que -Recursehace. -Forcesignifica eliminar esa cosa sin importar qué. -WarningActionestá configurado en SilentlyContinue.
Esto evita que el script te dé advertencias sobre lo que estás eliminando. -ErrorActionestá configurado en SilentlyContinuepara 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 Write-Hosthizo la primera vez, dará salida a la siguiente oración, así que sabemos 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 fácil de detectar.
Veamos el script por 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 así como delete-TemporaryFiles.ps1. También puede seguir con la convención de nomenclatura de cmdlets ahora que los comprende.
Si el código no funciona para usted por alguna razón, también puede descargar el script de PowerShell crear y solo ejecútalo. 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 PowerShell durante un segundo o dos, mientras que su script 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 un poco justo. Si has llegado hasta aquí, aplaude a ti mismo. Has aprendido mucho hoy, pero ahora quieres aprender más. ¡Eso es genial!
Hay muchos recursos en Internet para aprender más sobre PowerShell. Un buen lugar para comenzar es nuestro artículo, "Genere una lista de programas de inicio a través de la línea de comandos o PowerShell ". Luego, consulte estos otros recursos: