Proyecto Check-Files

Este proyecto consiste en implementar un script para el PowerShell de Windows que verifique si existen o no y si han cambiado una serie de archivos y subcarpetas de una carpeta dada. Esta información se leerá de un archivo como el siguiente:

C:\micarpeta                      <-- primera línea, la carpeta contenedora
fichero1.txt,11/03/2013 13:35:00  <-- resto de líneas, los archivos y subcarpetas a comprobar
fichero2.pdf,10/01/2012 11:17:22
subcarpeta1,30/11/2012 12:21:08
documento1.docx,23/04/2010 23:07:18
documento2.odt,08/01/2013 05:49:39

La primera línea es la carpeta que contiene a los archivos y subcarpetas, y el resto de líneas son los archivos y subcarpetas a comprobar. El script comprobará para cada archivo y subcarpeta, si existe o no, y en caso de existir, si la fecha de modificación del mismo ha cambiado o no.

El script deberá mostrar un listado de los cambios producidos.

  • El nombre del script será Check-Files.ps1.

Sintaxis

La sintaxis del script es la siguiente:

Check-Files.ps1 [ -Help | -Check fichero | -Generate fichero -Target carpeta ]

El funcionamiento del script será el siguiente:

Opción Descripción
-Help Muestra la ayuda de sí mismo: Get-Help .\Check-Files.ps1
-Check fichero Comprueba si ha habido cambios en la carpeta usando el fichero de control pasado por parámetro. Los cambios a controlar y notificar son los siguiente: el fichero ha sido modificado (por su fecha/hora), el fichero ha sido creado o el fichero ya no existe.
-Generate fichero -Target carpeta Para la carpeta indicada genera el fichero de control.

El script deberá contener los comentarios de ayuda de PowerShell, de forma que se muestre toda la información del mismo con Get-Help.

Ejemplos de uso

Suponiendo que disponemos de la carpeta C:\micarpeta.

PS C:\micarpeta> Get-ChildItem

    Directorio: C:\micarpeta

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       30/11/2012     12:21                subcarpeta1
-a----       23/04/2010     23:07          70011 documento1.docx
-a----       08/01/2013     05:49          34234 documento2.odt
-a----       11/03/2013     13:35           1045 fichero1.txt
-a----       10/01/2012     11:17           2047 fichero2.pdf

# Genera el fichero de control "info.txt" para el directorio "C:\micarpeta"
PS C:\> .\Check-Files.ps1 -Generate info.txt -Target C:\micarpeta
Fichero de control info.txt generado para la carpeta C:\micarpeta

# Muestra el contenido del fichero de control generado
PS C:\> Get-Content info.txt
C:\micarpeta
fichero1.txt,11/03/2013 13:35:00
fichero2.pdf,10/01/2012 11:17:22
subcarpeta1,30/11/2012 12:21:08
documento1.docx,23/04/2010 23:07:18
documento2.odt,08/01/2013 05:49:39

# Comprueba si ha habido cambios
PS C:\> .\Check-Files.ps1 -Check info.txt
Comprobando cambios en C:\micarpeta:
- No ha habido cambios, todo sigue igual

# Aplicamos algunos cambios sobre el contenido del directorio "c:\micarpeta"
PS C:\micarpeta> Remove-Item fichero2.pdf        # Elimina fichero2.pdf
PS C:\micarpeta> "Nueva línea" >> fichero1.txt   # Añade una línea al final de fichero1.txt
PS C:\micarpeta> "Nuevo fichero" > nuevo.txt     # Crea el fichero nuevo.txt

# Comprueba si ha habido cambios
PS C:\> .\Check-Files.ps1 -Check info.txt
Comprobando cambios en C:\micarpeta:
- fichero1.txt ha cambiado
- fichero2.pdf ya no existe
- nuevo.txt ha sido creado

Calificación

Opción Funcionalidad Peso (%)
-Help Mostrar la ayuda. 10
-Check Comprueba si ha habido cambios. 45
-Generate Genera el fichero de control. 45