
Gabriel Brooks
0
2748
585
Un primer paso crucial en el aprendizaje de la programación es trabajar con bucles. Los fundamentos absolutos de la programación para principiantes (Parte 2) Los fundamentos absolutos de la programación para principiantes (Parte 2) En la parte 2 de nuestra guía absoluta de programación para principiantes, cubriré el conceptos básicos de funciones, valores de retorno, bucles y condicionales. Asegúrese de haber leído la parte 1 antes de abordar esto, donde le expliqué el ... Afortunadamente, PowerShell continúa creciendo con tus habilidades.
Puede enmarcar los comandos existentes que usa todos los días dentro de los bucles para ahorrar tiempo y esfuerzo. Sus guiones hacen el trabajo pesado mientras usted hace el trabajo importante de leer más artículos en MakeUseOf!
Powershell ForEach Loops: la puerta al manejo avanzado de datos
ForEach es el alias del ForEach-Object. (Un alias es simplemente un acceso directo para un comando en PowerShell). Este es un buen momento para hablar sobre la forma en que PowerShell maneja los datos.
Como la mayoría de los lenguajes de programación modernos, PowerShell está orientado a objetos. ¿De dónde obtuvo su nombre la programación "orientada a objetos"? ¿De dónde obtuvo su nombre la programación "orientada a objetos"? Orientado a objetos no es solo una palabra de moda al azar que escuchas en los círculos de programación. Hay una razón detrás del nombre, pero ¿qué? Únete a mí mientras exploro algunos de los fundamentos de los conceptos de programación y explico ... Todo en PowerShell es un objeto, lo que significa que incluso las variables tienen propiedades y funciones extendidas Cmdlets de Powershell que mejorarán sus habilidades de administrador de Windows Cmdlets de Powershell que mejorarán sus habilidades de administrador de Windows Powershell es una herramienta de línea de comandos y lenguaje de secuencias de comandos en partes iguales. Le brinda la capacidad de automatizar su computadora a través de los mismos comandos que usa para administrarla. . Esa propiedad es la razón por la que puede establecer sus búsquedas en una variable y terminar con una matriz de resultados.
$ yourVar = Get-ChildItem * foreach ($ archivo en $ yourVar) Tus pasos
En algunos idiomas, el procesamiento de esta matriz sería un proceso de varios pasos. Primero, obtener la longitud y luego contar cada paso.
En PowerShell, recorre la matriz y realiza la acción en cada uno con ForEach. Esto le ahorra varias líneas de código, lo cual es útil si tiene un script más largo. Por ejemplo, el siguiente es un pequeño script que usaría un par de bucles Powershell ForEach. Crea un archivo ZIP de todos sus archivos que no ha abierto en 30 días..
Construyendo un Sistema de Archivo de Archivos Usando ForEach Loops
Bajemos los pasos. Tu usas Get-ChildItem para obtener todos los archivos en la carpeta Documentos. La variable de entorno ¿Qué son las variables de entorno y cómo puedo usarlas? [Windows] ¿Qué son las variables de entorno y cómo puedo usarlas? [Windows] De vez en cuando aprenderé un pequeño consejo que me hace pensar "bueno, si lo supiera hace un año, me habría ahorrado horas de tiempo". Recuerdo vívidamente aprender a ... $ env: PERFIL DE USUARIO ejecuta el script usando el perfil actual. Esta variable es más portátil que una ruta codificada. Los resultados de esa búsqueda se asignan a la variable $ MyDocs. Luego creamos nuestro bucle ForEach haciendo que pase por cada $ Doc en $ MyDocs.
$ oldDocs = @ () $ MyDocs = Get-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -Recurse foreach ($ doc en $ MyDocs) if ($ doc.LastAccessTime -lt $ (Get-Date) .addDays (-30)) $ oldDocs + = $ doc $ ArchiveFolder = New-Item -Path "$ ($ env: USERPROFILE) \ Documents \ $ ((Get-Date -Format MMddyy) .toString ()) "-ItemType Directory foreach ($ doc en $ oldDocs) Move-Item -Path $ doc.FullName -Destination" $ ($ ArchiveFolder.FullName) \ $ ($ doc.Name) "-Confirm $ false $ source = $ ArchiveFolder.FullName $ destination = "$ ($ env: USERPROFILE) \ Documents \ $ ($ ArchiveFolder.Name) .zip" Add-Type -AssemblyName "system.io.compression.filesystem" [io.compression.zipfile] :: CreateFromDirectory ($ source, $ destination) if (test-path $ destination) Remove-Item -Path $ ArchiveFolder -Recurse -Confirm $ false
Dentro del bucle, verificamos si cada archivo LastAccessTime La propiedad tiene más de 30 días. Obtenemos esto con el Obtener la fecha cmdlet, y usando el AddDays funcionan con treinta negativos. Si es así, agregamos el archivo al $ myOldDocs formación. Una vez que se completa la clasificación de archivos, tomamos nuestra matriz completa y creamos un archivo zip. Este proceso es un poco más complicado ya que implica invocar un poco de .NET. No se preocupe si no lo comprende: puede robar el código de este documento de ayuda de TechNet.
Para desglosar lo que está sucediendo aquí: trasladaremos todos nuestros archivos antiguos a un nuevo directorio con el nombre de la fecha de hoy por más de 30 días. Una vez que se construye esa carpeta, tenemos que crear el archivo ZIP del mismo nombre. Probamos para asegurarnos de que el archivo se realizó correctamente y que el archivo .ZIP está allí, y luego eliminaremos la nueva carpeta. Establezca esto como una tarea programada para ejecutarse una vez al mes. Se ahorrará un poco de espacio y mantendrá limpia su carpeta Documentos.
While y do while: bucles en condición
Si desea ejecutar un bucle solo cuando se cumple una condición particular, use un bucle While. Si está utilizando una variable para rastrear el conteo, configúrelo primero.
i = 0 while (i<10) Your Steps i+=1
El problema es que si no está utilizando un contador, es posible que desee que su código se ejecute al menos una vez, incluso si la prueba es verdadera. Este es el caso con el script de ejemplo a continuación. Entonces, en esos casos, desea utilizar un bucle Do-While Cómo funcionan los bucles Do-While en la programación de computadoras Cómo funcionan los bucles Do-While en la programación de computadoras Los bucles son uno de los primeros tipos de control que aprenderá en la programación. Probablemente conozca los bucles while y for, pero ¿qué logra un bucle do-while? . La sintaxis es ligeramente diferente..
do Your Steps while (Declaración condicional)
El uso de estos no es tan obvio para un programador novato. Al realizar secuencias de comandos típicas del día a día, es posible que no se las encuentre con tanta frecuencia. Lo que es especialmente útil es hacer un temporizador improvisado para probar el éxito de un proceso..
Vamos a construir un script rápido para reiniciar una máquina remota y alertar si no vuelve a aparecer en 15 minutos. Este escenario supone que es un servidor doméstico u otra máquina que no se reinicia muy a menudo. Siéntase libre de ajustar el tiempo si su computadora generalmente sube más rápido.
Reiniciar y verificar: usar un bucle Do-While
Este script es un poco más simple. Primero, usas el Reiniciar Computadora comando para reiniciar la máquina remota. (Utilizamos una IP ficticia aquí para los comandos de reinicio, asegúrese de sobrescribir esto con el DNS / IP de su computadora). Luego cree la variable de contador, yo y configúrelo en 0. Luego, tiene su bucle Do con Start-Sleep deteniendo el script durante 300 segundos (cinco minutos). Un segundo comando agrega uno al contador.
Restart-Computer -ComputerName 127.0.0.1 i = 0 do Start-Sleep -Seconds 300 $ i + = 1 while ((! (Test-Connection 127.0.0.1 -Quiet)) -o $ i -gt 3) if ( $ i -gt 3) Write-Ouput "La máquina remota no responde, verifique". else Salida de escritura "Reinicio exitoso"
Entonces tenemos nuestros criterios Mientras. Usamos una prueba O para garantizar que una falla genere una alerta. La alternativa es la secuencia de comandos en bucle sin parar esperando la máquina remota. Para verificar la máquina, estamos utilizando el Conexión de prueba cmdlet Por simplicidad, este es Ping para PowerShell. Agregamos el parámetro -Tranquilo lo que lo obliga a devolver Verdadero o Falso en lugar de los resultados de los paquetes. La segunda parte de la instrucción Or verifica si el contador es más de tres.
Una vez que se completa el ciclo, queremos crear la salida. Eso significa que necesitamos revisar nuestro contador. Esta es una rápida declaración if / else. Si es mayor que tres, el script muestra que la máquina remota no responde. Si no es así, da como resultado que el reinicio fue exitoso.
Otros bucles
Hay otros dos tipos de bucles disponibles en PowerShell. Están algo relacionados con los dos bucles anteriores, simplemente no se usan con tanta frecuencia. Un bucle For funciona de manera similar al ejemplo While. Establece todos sus criterios en la evaluación, luego configura sus cmdlets.
for ($ i = 0; $ i -lt 10; $ i ++) Tus pasos
Los bucles Do Hasta son como los bucles Do While, solo cambia la instrucción While a Hasta. En el script de ejemplo, sería lo mismo en cuanto a comportamiento. Es una opción de estilo, pero el Do While es más versátil en otras situaciones. Entonces, si solo recuerda uno, Do While es más útil.
PowerShell también tiene ayuda para cada uno de estos bucles. Puede obtener la ayuda agregando acerca de antes del nombre del bucle en Get-Help. Luego puede ver ejemplos y otros consejos para cada tipo. Esto debería ser útil si te quedas atascado.
Continuando creciendo contigo
En este punto, tiene la mayoría de las habilidades para comenzar a construir scripts robustos. Si automatizar su equipo doméstico 15 Tareas avanzadas que PowerShell puede manejar en Windows 10 15 Tareas avanzadas que PowerShell puede manejar en Windows 10 PowerShell es similar al símbolo del sistema, pero mejor. Es una poderosa herramienta de administración del sistema. Hemos compilado 15 tareas, algunas simples, otras complejas, que se benefician de la magia de PowerShell. o ahorrando tiempo en el trabajo, los bucles ayudan a sus scripts a hacer más. La combinación de estos bucles con el manejo de errores mueve sus secuencias de comandos más allá de lo básico Maneje los errores de PowerShell como un jefe con estos consejos Maneje los errores de PowerShell como un jefe con estos consejos Hay cuatro partes para el manejo de errores de PowerShell: el parámetro Acción de error, bloques Try / Catch, el Error Parámetro variable y registro. Aprende a hacerlos todos. . Esto abre la puerta a idiomas más avanzados..
¿Qué es un script inteligente de PowerShell que has creado usando bucles? Compártelo con nosotros en los comentarios.