UD 5. UTILIZACIÓN DE LA LÍNEA DE...

19
UD 5. UTILIZACIÓN DE LA LÍNEA DE COMANDOS La interfaz de línea de comandos o interfaz de línea de órdenes (en inglés, command-line interface, CLI) es un método que permite a los usuarios dar instrucciones al sistema por medio de una línea de texto simple. Debe notarse que los conceptos de CLI, shell y emulador de terminal no son lo mismo, aunque suelen utilizarse como sinónimos. Las CLI pueden emplearse interactivamente, escribiendo instrucciones mediante entrada de texto, o pueden utilizarse de una forma mucho más automatizada (archivo batch) o desde un archivo de scripts. El shell o intérprete de órdenes o intérprete de comandos es el programa informático que provee una interfaz de usuario para acceder a los servicios del sistema operativo. Bash : es un programa informático, cuya función consiste en interpretar órdenes, y un lenguaje de programación de consola. Está basado en la shell de Unix y es compatible con POSIX. Fue escrito para el proyecto GNU por Brian Fox y es el intérprete de comandos por defecto en la mayoría de las distribuciones de GNU con Linux. Bourne Shell: es un programa informático cuya función consiste en interpretar órdenes. Fue el intérprete usado en las primeras versiones de Unix y se convirtió en un estándar de facto. Korn shell (ksh) es un programa informático cuya función consiste en interpretar órdenes por líneas. Fue escrito para el proyecto de contenido libre GNU. Se encuentra disponible en la mayoría de las distribuciones GNU/Linux y para otros sistemas operativos basados en Unix. Símbolo del sistema:(en inglés, Command prompt, también conocido como cmd.exe o cmd) es el intérprete de comandos en OS/2 y sistemas basados en Windows NT (desde Windows 2000 hasta Windows 10 incluyendo las versiones Server). Es el equivalente de command.com en MS-DOS y sistemas Windows 9x. A diferencia de este, hoy en día este programa es solo una aplicación, no es una parte del sistema operativo. Muchas funciones que se realizan desde la interfaz gráfica del sistema operativo son enviadas al cmd que es el encargado de ejecutarlas. Pero a veces por la complejidad de la función se ejecutan mediante scripts y no directamente por el cmd. Zsh: es un potente intérprete de comandos para sistemas operativos de tipo Unix, como por ejemplo los BSD o GNU/Linux. 1

Transcript of UD 5. UTILIZACIÓN DE LA LÍNEA DE...

UD 5. UTILIZACIÓN DE LA LÍNEA DE COMANDOS

La interfaz de línea de comandos o interfaz de línea de órdenes (en inglés, command-line interface, CLI)

es un método que permite a los usuarios dar instrucciones al sistema por medio de una línea de texto simple.

Debe notarse que los conceptos de CLI, shell y emulador de terminal no son lo mismo, aunque suelen

utilizarse como sinónimos.

Las CLI pueden emplearse interactivamente, escribiendo instrucciones mediante entrada de texto, o pueden

utilizarse de una forma mucho más automatizada (archivo batch) o desde un archivo de scripts.

El shell o intérprete de órdenes o intérprete de comandos es el programa informático que provee una

interfaz de usuario para acceder a los servicios del sistema operativo.

• Bash : es un programa informático, cuya función consiste en interpretar órdenes, y un lenguaje

de programación de consola. Está basado en la shell de Unix y es compatible con POSIX. Fue escrito

para el proyecto GNU por Brian Fox y es el intérprete de comandos por defecto en la mayoría de

las distribuciones de GNU con Linux.

• Bourne Shell: es un programa informático cuya función consiste en interpretar órdenes. Fue el

intérprete usado en las primeras versiones de Unix y se convirtió en un estándar de facto.

• Korn shell (ksh) es un programa informático cuya función consiste en interpretar órdenes por

líneas. Fue escrito para el proyecto de contenido libre GNU. Se encuentra disponible en la mayoría

de las distribuciones GNU/Linux y para otros sistemas operativos basados en Unix.

• Símbolo del sistema:(en inglés, Command prompt, también conocido como cmd.exe o cmd) es el

intérprete de comandos en OS/2 y sistemas basados en Windows NT (desde Windows 2000 hasta

Windows 10 incluyendo las versiones Server). Es el equivalente de command.com en MS-DOS y

sistemas Windows 9x. A diferencia de este, hoy en día este programa es solo una aplicación, no es

una parte del sistema operativo. Muchas funciones que se realizan desde la interfaz gráfica del

sistema operativo son enviadas al cmd que es el encargado de ejecutarlas. Pero a veces por la

complejidad de la función se ejecutan mediante scripts y no directamente por el cmd.

• Zsh: es un potente intérprete de comandos para sistemas operativos de tipo Unix, como por ejemplo

los BSD o GNU/Linux.

1

• PowerShell: es una interfaz de consola (CLI) con posibilidad de escritura y unión de comandos por

medio de instrucciones o scripts. Es más rica e interactiva que sus predecesores, desde DOS hasta

Windows 7. Esta interfaz de consola está diseñada para su uso por parte de administradores de

sistemas, con el propósito de automatizar tareas o realizarlas de forma más controlada. No sólo

permite interactuar con el sistema operativo, sino también con programas de Microsoft como

SQLServer, Exchange o IIS... Su capacidad y funciones la asemeja al lenguaje Perl de Unix.

• Comandos Internos del cmd.exe

ASSOC Muestra o modifica las asociaciones de las extensiones de archivos.

BREAK Establece o elimina la comprobación extendida de ctrl+c

CD Cambia al directorio indicado

CD .. Cambia al directorio superior

CLS Limpia la pantalla

DATE Muestra o establece la fecha del sistema.

DEL Permite eliminar archivos.

DIR Permite ver todos los archivos y directorios de la ruta en la que nos encontramos.

FOR Ejecuta un comando para cada archivo en un conjunto de archivos.

FTYPE Muestra o modifica los tipos de archivo utilizados en una asociación de archivos.

GOTO Direcciona el intérprete de comandos de Windows a una línea en un programa por lotes.

HELP Proporciona información de ayuda para los comandos de Windows.

IF Ejecuta procesos condicionales en programas por lotes.

IPCONFIGMuestra la dirección IPv4 (privada), IPv6 (pública), máscara de subred, dirección MAC, y todo lodemás que tenga que ver con la red.

LABEL Crea, cambia o elimina la etiqueta del volumen de un disco.

MD y MKDIR Crea un directorio.

MOVE Mueve uno o más archivos de un directorio a otro en la misma unidad.

PATH Muestra o establece una ruta de búsqueda para archivos ejecutables.

PAUSE Suspende el proceso de un archivo por lotes y muestra un mensaje.

POPD Restaura el valor anterior del directorio actual guardado por PUSHD.

PROMPT Cambia el símbolo de comando de Windows.

PUSHD Guarda el directorio actual y después lo cambia.

RD Elimina un directorio.

REM Comentarios en archivos por lotes o CONFIG.SYS.

REN y RENAME Cambia el nombre de uno o más archivos.

REPLACE Reemplaza archivos.

RMDIR Elimina un directorio.

SET Muestra, establece o elimina variables de entorno de Windows.

SETLOCAL Inicia la localización de cambios del entorno en un archivo por lotes.

2

SHIFT Desplaza los argumentos del archivoa la izquierda. Se usa en archivos con más de diez parámetros

START Inicia otra ventana para ejecutar un programa o comando.

TIME Muestra o establece la hora del sistema.

TITLE Establece el título de la ventana de una sesión de cmd.exe.

TYPE Muestra el contenido de un archivo (en general de texto)

VER Muestra la versión de Windows.

VERIFY Enciende o apaga la comprobación al almacenar archivos

VOL Muestra la etiqueta del volumen y el número de serie del disco.

SHUTDOWNApaga, reinicia o hiberna el equipo local. Tiene un montón de modificadores para planificar entiempo el apagado o reinicio, un cierre de sesión además de forzar el apagado de aplicaciones.También se usa para documentar un cierre inesperado del sistema.

• Comandos Externos del cmd.exe1

ATEl comando AT programa la ejecución de comandos y programas en un equipo a una hora y fechaespecificadas. El servicio de programación debe estar en ejecución para utilizar el comando AT.

ATTRIB

Sin parámetros, visualiza los atributos de los directorios y archivos. Con parámetros, cambia losatributos de directorios y archivos.Los atributos de los directorios, y los ficheros son: de lectura (r), deescritura (w), de archivo (a), oculto (h), de sistema (s). Parámetros: signos (más o menos) y letras r, w,a, y h “v”. Ejemplo: Attrib +r *.* (atributo de sólo lectura, para todos los ficheros de ese directorio)

AUDITPOL Es usado para mostrar o cambiar configuraciones de permisos

APPEND Sirve para especificar trayectorias para ficheros de datos.

BACKUP Ejecuta una copia de seguridad de uno o más archivos de un disco duro a un disquete.

CALL Llama a otro fichero .bat

CHOICEPermite que los usuarios seleccionen un elemento de una lista de opciones y devuelve el índice de laopción seleccionada.

CHKDSK Indica si hay errores en el disco duro. Permite además corregirlos con el parámetro “/F”

COLOR Permite cambiar el color del fondo

DELTREE Borra un directorio sin importar que contenga subdirectorios con todos sus contenidos.

DISKCOPY Permite hacer una copia idéntica de un disquete a otro, pertenece al grupo de las órdenes externas

DOSKEY Permite mantener residentes en memoria RAM las órdenes que han sido ejecutadas

ECHO Muestra una salida de una cadena de caracteres o string

FC Compara ficheros.

FIND Busca una cadena de texto en uno o más archivos.

FORMATPermite crear la estructura lógica, en una unidad física de almacenamiento (discos duros, disquetes yunidades de almacenamiento masivo).

GPUPDATE Actualiza los cambios hechos en el Editor de directivas de grupo local.

1 Se excluyen aquellos comandos que tengan relación con el módulo de Redes de Área Local así como otros de menor interés o uso

3

KEYB Establece el idioma del teclado según el parámetro adicionado (KEYB SP para el teclado español)

LABEL Muestra o cambia la etiqueta de la unidad de disco duro.

MEM Muestra la memoria RAM, el espacio ocupado y el espacio libre.

MOVE Mueve o cambia de posición un directorio y/o ficheros. También renombra subdirectorios.

MORE Muestar pantalla a pantalla

MSTSC Conexión a escritorio remoto

PRINT Permite imprimir ficheros.

QPROCESS Muestra información sobre procesos

QUERY Muestra el status actual y los parametros de un servicio especifico

QUSER Mostrar información sobre los usuarios que han registrado la entrada en el sistema

RUNDLL32 Inicia funciones incluidas en librerías DLL del sistema.

RUNAS Es usado para ejecutar un programa utilizando credenciales o derechos de otro usuario

SC Muestra o configura servicios (procesos en segundo plano).

SORT Ordena los resultados de un comando seleccionado, como los resultados de una busqueda con FIND

SUBST Crea una unidad lógica virtual a partir de un directorio.

TREE Muestra los directorios en forma de árbol.

XCOPY Copia árboles de directorios y directorios

Por último los caracteres especiales:

/ Se denomina slash e indica que los caracteres que se escriben a continuación se interpretancomo opciones del comando que se está ejecutando/? Señala que deseamos obtener ayuda sobre el comando que lo precede? Comodín que indica que hay un carácter en ese lugar del nombre del fichero* Comodín que señala una cadena de caracteres (puede ser nula)| Tubería que toma la salida del primer coman do y se la aplica como entrada al segundo< Redireccionamiento de entrada> Redireccionamiento de salida>> Redireccionamiento de salida en modo adición% Indicador de argumento. Indica el directorio actual.. Indica el directorio anterior

A continuación realizaremos una serie de ejercicios y scripts donde se pongan en juego la mayoríade los comandos expuestos.

4

Escenario 1. Configura una máquina virtual en modo NAT-Network según los datos que se indican a continuación.

MVNombrePC Usuario Grupo Trabajo IP Netmask Gateway DNS

WIN7 wadmin SOM 10.0.0.10 255.255.255.0 10.0.0.2 8.8.8.8

Posteriormente añade un disco duro de 5GB, formatéalo en NTFS y con etiqueta Empresa.Finalmente crearemos el árbol de directorios que se indican a continuación.

Empecemos:

Lanzamos el asistente de Discos de la MV Nuevo Disco, continuamos con el asistente..

5

.. hasta la configuración del tamaño 5GB Finalizamos

La configuración del disco adicional la haremos mediante comandos la terminal. Lanzamos la MV y recordad instalar

los Guest Additions y configurar los parámetros de red, usuario y grupo de trabajo.

Ejecutamos en modo administrador el interprete decomandos cmd.exe

Ejecutamos el comando diskpart, herramienta que nospermitirá configurar los discos. A continuaciónejecutamos list disk, observamos los discos.Seleccionamos el disco 1 mediante select disk 1

Creamos una particion primaria Create primarypartition, y la activamos active

Formateamos format FS=NTFS quick y le asignamosuna letra assign letter=E. Observamos como en elexplorador de archivos nos aparece la nueva unidad.Salimos de diskpart, exit y cambiamos la etiqueta label E:

6

Para crear el árbol de directorios echaremos mano de un primer script en .bat, s1.bat2.

@echo off

:: Montamos el menu, limpiamos pantalla y cerramos el echo menu es un etiqueta

:menuclscolor 97echo ===== MENU ====== %DATE% ====

echo 1 Opcion 1 Crear Directorio

echo 2 Opcion 2 Salir

echo ===============================

set /p op=Seleccion una opcion

if "%op%"=="1" goto crear

if "%op%"=="2" goto salir

:: Pedimos una variable que será la ruta y nombre del directorio

:crear clsset /p var=Indique el directorio

:: Si existe no lo creamos en caso contrario lo crea

If exist %var% (

echo El directorio "%var%" ya existepausegoto:menu ) Else (

md %var% echo Directorio creadopause )

:: Nos muestra el árbol de directorios para ver que todo va bien

treepause

goto:menu

:salir pausecolor 07

Resultado final

2 Puede suceder que nos encontremos con scripts en Windows con extensión .cmd. Desde el punto de vista funcional son iguales a los .bat y solo existen diferencias de carácter semántico en algunos comandos.

7

Ejercicio. Completa el fichero s1.bat añadiento una opción en el menú que permita borrar directorio. Hayque tener en cuenta que el borrado de directorios que no están vacíos obliga a establecer el parámetro /s

Movemos el fichero s1.bat a la carpeta soportetecnico. Enlo sucesivo los scripts en Windows irán esta carpeta.

Vamos a codificar un segundo script s2.bat que haga unacopia de seguridad del directorio administración en eldirecotrio copias del disco duro C:\copias a unadeterminada hora

@echo off

cls

set /p origen="Escribe la ruta de la carpeta que quieres copiar:"

set /p destino="Escribe la ruta de destino"

set /p hora="Escribe la hora a la que se hara esta copia: (hh:mm)"

::comprobamos que existe destino

If exist "%destino%" (

at %hora% xcopy %origen% %destino% /e/y ) Else (

md %destino% at %hora% xcopy %origen% %destino% /e/y )

Creamos un acceso directo al fichero .bat. Sobre elacceso directo → botón derecho → opciones avanzadas→ ejecutar como administrador.

Y aquí vemos el resultado en el directorio copias.

8

En el siguiente script s3.bat renombramos varios ficheros en un mismo directorio

@echo off:: corrige un bug y retarda la carga de la variable para dar tiempo tomar valorsetlocal enabledelayedexpansion

clsecho Este archivo BAT recorre un directorio y sus subdirectorios y renombra losarchivos que tengan una determinada extension:echo.echo.

set /p dir="Introduce la ruta del directorio:"

set /p ext="Introduce la extension de los archivos que se van a cambiar:"

set /p nueva="Introduce la nueva extensión que van a tener esos archivos:"

echo.echo.

rem Me situo en el directorio en cuestion

cd %dir%

rem Cambio la extension de los archivos del directorio actual

ren *.!ext! *.!nueva!

rem Con el siguiente "for" me voy metiendo en los subdirectorios del directoriorem actual y les voy cambiando la extension a los archivos elegidos

for /D /R %%x in (*) do (

cd %%x

ren *.!ext! *.!nueva!

cd ..

)

El último script s4.bat nos permitrá apagar el ordenador en un tiempo determinado. Completa el script grabando lahora de apagado un fichero llamado historial.txt que se guardará en el directorio soportetecnico. Si no existe debecrearse (busca en interne el comando fsutil). Cambia el atributo a solo lectura cada vez que se grabe algo.

@echo offecho Temporizador de apagado del PC en un tiempo determinadoset seg=60set /p min=“Escriba el tiempo en minutos…: ”set /a ok=%min% * %seg%cls

choice /C SN /T 10 /D S /N /M “Escriba S para continuar o N para cancelar...”

IF ERRORLEVEL 2 goto salir shutdown.ex -s -t %ok% -c “El equipo va a apagarse en %min% minutos”

:salirexit

9

Ejercicio. Genera un fichero .bat y añadir al programador de Tareas de Windows para que ejecute a unahora determinada, por ejemplo, los viernes a las 21:45 horas. Dicho fichero lanzara un compresor, porejemplo, el 7zip para que haga un copia completa de la unidad E: que se guardará en C:\Copias. Podemosañadir opciones como solicitar nombre del fichero por pantalla, añadir al nombre del fichero la fecha delsistema (concatenar el nombre) y/o lugar de la copia.

Breve manual sobre la sintaxis ejecución en línea de comandos de 7zip.

En primer lugar, tenemos que familiarizarnos con la sintaxis necesaria por el 7z. Comienza tu líneaindicando el sitio en donde se encuentra el 7z; si lo tienes junto al BATCH inicia la línea con 7z.exe. 7z.exe ComandoAUtilizar -FunciónParaElComando NombreDelArchivoDeSalida El ComandoAUtilizar está entre:

a: Agregar archivos. Si usamos el -ai, podremos incluir una lista de archivos incluida en un .txt b: Benchmark d: Borrar archivose: Extraer archivosl: Listat: Probaru: Actualizarx: Extraer archivos con las rutas completas La -FunciónParaElComando (También llamado Switch) sirve para especificar lo que hará el comando,de esta forma podemos agregar archivos específicos al comprimido, o extraer alguno en específico.Siempre debe comenzar con un - (Guíon). Entre ellos están:-ao: Modo de autorenombramiento.-i: Incluir archivos específicos.-mx: Nivel de compresión.-o: Establecer directorio de salida.-p: Establecer contraseña.-sfx: Crear un archivo SFX.-t: Tipo de compresión a utilizar. -v: Partir en tamaños de Kb, Mb y Gb.-w: Indicar el directorio dónde se trabajará.-x: Excluir archivos. Para excluir varios archivos desde otro archivo -ax-y: Responder que sí a cualquier evento.

El NombreDelArchivoDeSalida puede tener la terminación en la que queremos que quede el archivo, o sibien la dejamos en blanco, el archivo que resulte de la operación será .7z a menos que usemos el switch -tcambiando el formato del archivo; pero aun cambiando el método de compresión, podemos indicar laterminación del archivo si la especificamos.

Ejercicio. Genera un fichero .bat que cuando se inicie la sesión del sistema instale un fichero de instalaciónde Windows (.msi). Para ello debes generar tu propio instalador .msi a partir de un fichero .exe de cualquierprograma, por ejemplo, Filezilla. Para crear un fichero .msi este enlace explica como hacerlo.

msiexec /i X:\ruta_archivo\nombre_archivo.msi /quiet

También puedes sustituir /quiet por /qn. La imagen msi estará en soportetecnico

10

Ejercicio. Genera un fichero .bat que permite al administrador de un sistema guardar dos parámetros:nombre usuario, contraseña y fecha de alta en un fichero llamado users.txt. Dicho fichero si no existe secrea y estará oculto a los usuarios (attrib). El .bat pedirá el nombre de usuario. La contraseña será aleatoria para ello usamos el comando %random%que genera un número al azar entre 1 y 32768 y la fecha con el comando date. En el fichero la estructuratendrá que ser la siguiente:nombreusuario;constraseña.Otra opción del menu será dar de alta a los usuarios y para ello usaremos el comando net user.

El script recorrerá el fichero tomando el nombre de usuario y constraseña y ejecutamos la orden:

net user nombre contraseña /add

El script deberá presentar el menú correspondiente

Ejercicio. Genera un fichero .bat que realice las siguientes funciones.1. Visualice por pantalla todos los usuarios del sistema2. Que vuelque en un listado, informe.tx todos los usuarios del sistema por orden alfabético de nombre y algrupo que pertenecen.

Ejercicio. Genera un fichero .bat que realice las siguientes funciones:1. Buscar en la unidad C: todos los ejectubales o ficheros acabados en .exe2. Un listado de todos los procesos que se están ejectuando

Ejercicio. Genera un fichero .bat que permite realizar una llamada a todos y cada uno de los scripts quehemos creado. (función call)

11

Actividad 2.1. Conceptos básicos de PowerShell. Scripts

Como comentarmos PowerShell tiene una riqueza semántica y un grado de funcionalidad muysuperior a los tradicionales ficheros vistos. Algunas consideraciones:

• en algunos aspectos tiene similitudes con cmd.exe cuyos comandos funcionan aquí

• los comandos en PS se llaman cmdlets (commandlets)

• un cmdlet tiene tres partes

◦ un verbo

◦ un nombre

◦ uno o varios argumentos y/o parámetros (opcionales). Algo así como:

▪ verbo-nombre -parámetro1 argumento1 -parámetro2 argumento2 …

Ejemplo: get-history -count 10 (muestra los últimos 10 comandos)

Haremos unos ejercicios sencillos que nos permitan introducirnos en esta herramienta.

Para iniciar Windows Power Shell desde Inicio → y escribimos PowerShell… También podemos lanzar la herramientadesde Ejecutar → cmd.exe → Powershell

Lanzamos PS Como obtener ayuda get-help. También vale man y help.

Comando get-command muestra el listado de los cmdlets En este caso nos muestra un alias, que es otra manera dellamar a un cmdlet

12

PS admite tuberías como apreciamos en la penúltima imagen hasta ahora “|” y redireccionamientos “>”“>>”

Get-childitem nos muestra todos el contenido, en estecaso con extension .bat, include, y recorre lossubdirectorios, recurse. Tiene tres alias: dir, ls, gci.

Con el parámetro format-list nos muestra máspropiedades o atributos de los objetos de la salida de uncmdlet.

¿Cuál será el contenido del fichero datos.txt? Para que el resultado sea más legible podemos aplicar elfiltro format-table

Creamos un par de ficheros vacíos con: New-Item -itemType file nombrefichero

Y volcamos un listado de los mismos en un tercerollamado listado.txt

Si queremos mostrar con un determinado parámetro elcontenido de un directorio usamos -format-wide

fw es un alias de format-wide ¿qué significan path yrecurse?

13

Get-member para conocer los metodos y propiedades delos objetos.

Get-Executionpolicy: Obtiene la directiva de ejecucionvigente en el shell.

Esta directiva de ejecucion esta determinada por laspreferencias del usuario que establezca mediante “Set-

Executionpolicy” y la configuracion de directiva de grupode ejecucion de Windows Powershell. La configuracion

predeterminada es “restricted”

Parametros de Set-Executionpolicy más usadas:

-executionpolicy <executionpolicy>: Especifica una nueva directiva de ejecucion del shell. El nombre delparametro es opcional. Los valores validos para <executionpolicy> son:

• Restricted: No carga archivos de configuracion ni ejecuta scripts. La configuracion predeterminada

es “restricted”.

• Remotesigned: Requiere que todos los scripts y archivos de configuracion descargados de internet

esten firmados por un editor de confianza.

• Unrestricted: Carga todos los archivos de configuracion y ejecuta todos los scripts. Si ejecutamos

un script sin firmar descargado de internet, nos pedira permiso antes de ejcutarlo.

Un alias es un nombre alternativo o sobrenombre para uncmdlet

Con set-alias establecemos nuevos alias

El paso siguiente es realizar sencillos scripts en Power-Shell que es la forma habitual que tienen losadministradores para realizar tareas repetitivas que requieran esta herramienta.El lenguaje de Script de PowerShell PSL, permite el uso de variables, bucles, condicionales, funciones ymanejo de errores. Algunos conceptos básicos:

• para obtener ayudas, por ejemplo, del for sería: get-help about_for• los cmdlets podemos separarlos por “|” o por “;”• los comentarios en el código empiezan por #• las variables vienen precedidas por el símbolo $, por ejemplo, $numero=23• la extensión de los scripts es .ps1• se ejecutan como .\nombrescript.ps1• para ejecutarlos debemos activar la directiva allsigned: Set-ExecutionPolicy Allsigned• permiten la creación de funciones dentro del script

Veamos un sencillo ejemplo

14

Ejecutamos Win+R → powershell_ise y nos muestra unsencillo editor para scripts de Powershell

Si por ejemplo escribimos Get- en las versiones superioresa PSL-2 (Windows 8 y sucesivas) automáticamente meaparece la herramienta de autocompletar. En nuestro casola versión es la 1.

Vamos a escribir el script holamundo.ps1y posteriormenteejecutarlo con el triángulo verde del menú superior paraver la salida en la ventana intermedia.

La ventana inferior nos permite ejecutar directamente enel prompt o cmd del sistema. Recordad que hay que pulsarenter.

Supongamos que nos solicitan un inventario del hardware y software de los ordenadores de una empresa.Para ello Vamos a crear un script que nos muestre un menú con las siguientes opciones:1. Ver información de hardware2. Aplicaciones instaladas 3. SalirEl resultado lo volcaremos en un fichero llamado informe.txt.Vamos a construir el menú y el módulo principal del script

#esta es la funcion menu

function Funcion-Menu{ param ( [string]$Titulo = 'Listado de Harwdare y Software del Sistema' ) cls Write-Host "================ $Titulo ================" Write-Host "1: Opcion '1' Información hardware." Write-Host "2: Opcion '2' Información Software." Write-Host "3: Opcion '0' Salir."}

15

# Programa Principal tenemos un bucle que solo sales si pulsas 0...$fich=”e:\gerencia\computacion\soportetecnico\inventario.txt”$fich2=”e:\gerencia\computacion\soportetecnico\inventario.csv”do{ #Aqui llamamos a la funcion menu Funcion-Menu $opcion = Read-Host "Por favor, elija una opción" switch ($opcion) { '1' { cls

'Elegiste opcion #1' } '2' { cls 'Elegiste opcion #2' } '0' { cls ‘Aqui sales’ } } Read-Host 'Pulsar tecla para continuar...' }until ($opcion -eq '0')

Ejecucion del scriptAnalicemos el código. La construcción:

do{…..sentencias a ejecutar….}until condicion

es un bucle que ejecuta las sentencias que hay entre las llaves hasta (until) que se cumpla la condición.Cuando esta se cumple entonces sale del bucle.La construcción switch es una construcción condicional, según el valor de la variable opcion se ejecutará lasentencia correspondiente.

16

Es una construcción como if – else con la diferencia de que permite múltiples condiciones.Ahora que tenemos el menú vayamos a completar el código en la estructura condicional:

switch ($opcion) { '1' { cls $comp = Read-Host "Indique número de equipo: " $comp | out-file -filepath $fich -append Get-WmiObject -Class Win32_Processor Caption | out-file -filepath $fich -append Get-WmiObject -Class Win32_PhysicalMemory | out-file -filepath $fich -append Get-WmiObject -Class Win32_LogicalDisk | out-file -filepath $fich -append } '2' { cls $comp = Read-Host "Indique número de equipo: " $comp | out-file -filepath $fich2 Get-WmiObject -class win32_Product | export-csv $fich2 } '0' { cls ‘Salimos...’ sleep(1) } } Read-Host 'Pulsar tecla para continuar...'

En este script vemos la forma que tienen los cmdlets de obtener información del sistema, en nuestro caso,solo obtendremos en la opción hardware, tipo de procesador, memoriay capacidad del disco y en elsoftware lo instalado. Lo más interesante es la forma en que guardamos la información. En el caso 1usamos fichero .txt ya vistos en los ficheros bat, pero en el segundo caso observamos un tipo de ficheroscsv, que es un formato muy utilizado para guardar datos en formato de tabla donde se disponen encolumnas separadas por un punto o punto y coma. Este tipo de ficheros puede ser abierto sin problemas porprogramas de hoja de cálculo. Es un recurso habitual en el mundo de los administradores de sistemas paraguardar datos de los equipos y redes que administran. También se pueden exportar los resultados a HTML.

En el siguiente script vamos a mostrar los procesos que están activos en verde y los que estén parados enrojo. Con este script observamos con se ejecuta un sencillo if – else.

get-service | foreach-object { if ($_.status -eq "stopped") { write-host -f red $_.name $_.status } else { write-host -f green $_.name $_.status } }

Ejercicio. Completa el script anterior volcando los resultados en un fichero .csv. A continuación abre elfichero con cualquier hoja de cálculo para ver el resultado. Puedes además añadir un breve menú con la opción mostrar procesos según estado y luego la típica opciónde salir.

17

Con la opción sort-object -property name, podemoslistar alfabéticamente en este caso los comandos, get-command. El término sort también existe en los .bat.

En este caso hacemos un listado de ficheros de la unidadde la empresa en formato lista.

Con where-object {} podemos filtrar resultados en lasalida de la ejecución, por ejemplo, buscando ficheros con300 bytes de tamaño o más en el directorio de la empresa

O aquellos procesos que están parados

Por último comentar Get-Wmiobject. Es una cmdlet quepermite instanciar clases de Wmi o información de lasclases disponibles. Por ejemplo información de la BIOS...

...o información sobre el sistema operativo

Hasta aquí una breve introducción a PowerShell. Esta herramienta es mucho más versátil de lo queplanteamos en los ejercicios propuestos, pero dicha capacidad tiene relación directa con su complejidad, lacual por cuestions de tiempo no es osible abarcar en su totalidad. Se proponen unos sencillos scripts quedebes codificar. En internet se existen ejemplos similares que puedes adapatar a lo que aquí se exigen. Atodos aquellos que quieran ampliar este tema les aconsejo el siguiente enlace.

Ejercicio. Genera un fichero .ps1 que te pida una hora y a continuación apague el equipo a esa hora.

Ejercicio. Genera un fichero .ps1 que añadiéndolo al perfil de usuario al inicio de sesión grabe, nombre deusuario, el día y hora de su inicio de sesión en un fichero .csv. Idem al finalizar la sesión con otro script.

18

Ejercicio. Genera un fichero .ps1 que liste todos los archivos .txt de la unidad C: mayores de 1000 bytesmostrando solo nombre y tamaño.

19