Entrada y salida de PowerShell
Una de las primeras cosas que hace al aprender un nuevo lenguaje informático es aprender a realizar entradas y salidas. Aprendimos cómo hacer la salida desde el enlace link: / windows-Introduction_to_PowerShell [Introducción a PowerShell]
. Si recuerda, usamos el cmdlet Write-Output. Ahora es el momento de aprender a leer un archivo y mostrar su salida en la pantalla.
Digamos que tenemos un archivo de texto llamado «C: \ Temp \ Temp.txt» y contiene diez líneas. La forma más sencilla de mostrar estas líneas es mediante el cmdlet Get-Content. Así es como se ve ejecutar este cmdlet en nuestro archivo: (Ver Figura 1.)
Figura 1. Get-Content lee un archivo.
¿Qué pasa si solo desea mostrar las primeras tres líneas del archivo?
Hay diferentes formas de hacerlo, pero quizás la forma más sencilla es utilizar variables. En PowerShell, una variable puede ser de cualquier tipo de datos y el nombre de la variable comienza con «$». Los ejemplos de nombres de variables incluyen «$ myName», «$ números», «$ hoy», etc. Usted asigna un valor a una variable con un signo «=», por lo que un comando legal de PowerShell sería
PS> $myName = 'Barry'
Con ese trasfondo, ahora sabemos lo suficiente para mostrar las primeras tres líneas de nuestro archivo. Asignaremos el contenido del archivo a una variable llamada $ líneas, y luego mostraremos sus primeras tres líneas: (Ver Figura 2.)
Figura 2. Usando una variable.
Aquí, asignamos el contenido del archivo a la variable $ lines (que en realidad es una matriz) y usamos la sintaxis «[0..2]» para acceder a los elementos 0, 1 y 2 de la matriz. El elemento 0 es la primera línea; el elemento 1 es la segunda línea; y el elemento 2 es la tercera línea.
Es igual de fácil acceder a las últimas líneas de la matriz. Esto se hace usando subíndices negativos, por lo que $ línea [-1] es la última línea de la matriz; $ línea [-2] es la penúltima línea de la matriz; etc. La siguiente figura muestra cómo mostrar las últimas tres líneas de nuestro archivo: (Ver Figura 3.)
Figura 3. Accediendo a una matriz usando subíndices negativos.
Otra forma de recuperar texto de un archivo es buscarlo y mostrar los resultados. Para buscar texto en PowerShell, use el cmdlet Select-String. Select-String requiere muchos conmutadores, que puede ver si solicita ayuda sobre el cmdlet, pero un formulario simple requiere que solo especifique el nombre de archivo y el patrón que está buscando. Entonces, si quisiera encontrar todas las líneas en mi archivo que contienen el texto «línea» (que sería cada línea), podría hacerlo así: (Ver Figura 4.)
Figura 4. Búsqueda de un patrón en un archivo.
Select-String es bastante poderoso porque busca usando expresiones regulares. (Hay otro consejo titulado «Introducción a las expresiones regulares».) Entonces, si quisiera encontrar todas las líneas que comienzan con una «l» y terminan con un solo dígito (es decir, todas las líneas excepto la línea 10), se vería así esto: (Ver Figura 5.)
Figura 5. Búsqueda de un archivo usando una expresión regular.
Hemos hablado mucho sobre la lectura de archivos, por lo que deberíamos terminar hablando de cómo escribir archivos. Por supuesto, puedes usar el conocido «>»
carácter para redirigir su salida a un archivo, pero en PowerShell también puede usar el cmdlet Out-File para enviar la salida a un archivo.
Supongamos que desea obtener una lista de todos los procesos activos en su sistema. El cmdlet para hacer esto es Get-Process. Aquí se muestra una parte de la salida de Get-Process: (Ver Figura 6.)
Figura 6. Salida parcial de Get-Process.
Tenga en cuenta que la octava línea de la última está truncada. Esa línea termina con «vmware-usbarbitrat …». Si tuviéramos que enviar simplemente esta salida a un archivo, el archivo también contendría esta línea truncada. En su lugar, podemos usar el modificador «-width» de Out-File para indicar que queremos un ancho mayor para evitar el truncamiento. Aquí está nuestro comando para obtener los procesos, canalizar la salida a Out-File y especificar un ancho para la salida:
PS C:\Bat> Get-Process | Out-File C:\Temp\Temp2.txt -width 100
Este consejo (13507) se aplica a Windows 7, 8 y 10.