Saltar al contenido principal

🗃️ PowerShell y manipulación de archivos

  • Individual, a su propio ritmo

🎯 Objetivo de aprendizaje​

  • Manipular archivos y directorios mediante PowerShell
  • Automatizar tareas simples con scripts
  • Utilizar rutas relativas y absolutas
  • Buscar archivos y contenido textual en una estructura de carpetas
  • Mostrar y modificar los permisos de los archivos

📜 Enunciado​

🔧 Contexto​

Un administrador de sistemas le encarga una serie de tareas para realizar mediante PowerShell. Estas tareas podrían automatizarse en un pequeño script. Usted debe crear un entorno de trabajo, manipular archivos y directorios, todo utilizando PowerShell.

📁 Paso 1 – Preparar un entorno​

  1. Abra PowerShell en una carpeta de trabajo de su elección.
  2. Cree la siguiente estructura con PowerShell:
projet/
├── notes/
├── archives/
└── temp/
  1. En la carpeta notes, cree 3 archivos de texto llamados cours1.txt, cours2.txt, cours3.txt. Cada uno de estos archivos debe contener una frase diferente, incluyendo la palabra important en uno de ellos. Inserte el contenido directamente en los archivos con PowerShell.
  2. En la carpeta temp, cree un archivo de texto llamado temp.txt con el siguiente contenido:
    Ce fichier est temporaire.

Comandos útiles:

  • New-Item para crear archivos y carpetas
  • Set-Content para escribir contenido en los archivos
  • Get-ChildItem para listar archivos y carpetas

📂 Paso 2 – Búsquedas y rutas​

  1. Busque todos los archivos .txt en la carpeta projet, incluso en los subdirectorios.
  2. Busque la palabra important en todos los archivos de texto.
  3. Muestre la ruta absoluta de cada uno de los archivos .txt.

Comandos útiles:

  • Get-ChildItem -Recurse para listar archivos recursivamente
  • Select-String para buscar texto en los archivos
  • Resolve-Path para obtener la ruta absoluta de los archivos

🔄 Paso 3 – Automatización y englobamiento simple​

  1. Escriba un script de PowerShell llamado gestion.ps1 que realice las siguientes operaciones:

    • Copia todos los archivos de notes a archives

    • Elimina el contenido de la carpeta temp si existe (sin eliminar la carpeta temp en sí)

    • Renombra los archivos copiados en archives agregando _backup antes de .txt

      • Ejemplo: cours1.txt → cours1_backup.txt

Comandos útiles:

  • Test-Path para verificar la existencia de una carpeta o archivo
  • Copy-Item para copiar archivos
  • Remove-Item para eliminar archivos o carpetas
  • Rename-Item para renombrar archivos

Ejecute varias veces su script para verificar que es idempotente (no causa errores si se ejecuta varias veces).

🧪 Paso 4 – Verificación automática​

Agregue a su script un comando que:

  • Cuente y muestre el número de archivos en archives
  • Muestre un mensaje "Éxito: todos los archivos han sido respaldados." si este número es 3

🔐 Paso 5 – Permisos NTFS (derechos de acceso)​

  1. En la carpeta notes/, quite al usuario actual el derecho de lectura sobre uno de los archivos. Esto debe hacerse utilizando PowerShell.

  2. Intente leer este archivo con Get-Content. ¿Qué sucede?

  3. Restablezca luego el permiso con PowerShell.

  4. Dé temporalmente a toda la carpeta archives/ un permiso de lectura y escritura solamente (sin permiso de eliminación).

  5. Intente luego borrar un archivo de archives/ con Remove-Item. ¿Qué observa?