#Requires -Version 5.1 <# .SYNOPSIS Recrea los ficheros de prueba del Escritorio que el ejercicio cifra. .DESCRIPTION Durante el ejercicio, el impacto renombra a .rt26 los ficheros del Escritorio. Cuando se revierte o se limpia, esos ficheros se van: y entonces la siguiente demostracion no tiene nada que cifrar. Este script los vuelve a dejar puestos. Son documentos de relleno, con nombres y contenido plausibles de oficina, para que la pantalla del impacto se parezca a la de un equipo real. NO toca los seƱuelos de Documentos: esos los pone la siembra del propio ejercicio (Fase 1, accion Vector1Plantar). .PARAMETER Carpeta Donde crearlos. Por defecto, el Escritorio del usuario actual. .PARAMETER SoloSiFaltan Si un fichero ya existe, no lo reescribe. Es lo recomendable si el usuario tiene trabajo suyo en el Escritorio. .PARAMETER Nombres Muestra lo que hara sin crear nada. .EXAMPLE .\Reset-DesktopDummies.ps1 Deja los seis ficheros de prueba en el Escritorio. .EXAMPLE .\Reset-DesktopDummies.ps1 -SoloSiFaltan -Nombres Ensenya lo que haria, sin tocar nada. .NOTES Ejecutalo EN LA SESION DEL USUARIO que va a someterse al ejercicio: si lo lanzas elevado con otra cuenta, los ficheros acabaran en el Escritorio de esa otra cuenta. #> [CmdletBinding()] param( [string]$Carpeta, [switch]$SoloSiFaltan, [switch]$Nombres ) $ErrorActionPreference = 'Stop' if (-not $Carpeta) { $Carpeta = [Environment]::GetFolderPath('Desktop') } if (-not (Test-Path -LiteralPath $Carpeta)) { throw ("No existe la carpeta de destino: {0}" -f $Carpeta) } function Escribir { param([string]$Texto, [string]$Color = 'Gray') Write-Host $Texto -ForegroundColor $Color } Write-Host '' Escribir '=== Recrear los ficheros de prueba del Escritorio ===' 'Cyan' Escribir ("usuario : {0}" -f [Security.Principal.WindowsIdentity]::GetCurrent().Name) Escribir ("carpeta : {0}" -f $Carpeta) Escribir '' # Nombres y contenido. El penultimo es el tipico "Nuevo documento de texto" que Windows # duplica con (2), (3)...; por eso se generan tres con ese patron. $relleno = @( @{ Nombre = 'Presupuesto_2026.csv' Contenido = @" Concepto;Proveedor;Importe;IVA;Total Licencias ofimatica;CompuSuministros S.L.;12400,00;2604,00;15004,00 Servidores;Hosting Iberica;8600,00;1806,00;10406,00 Soporte anual;CompuSuministros S.L.;4500,00;945,00;5445,00 Formacion;Aula Virtual Norte;1800,00;378,00;2178,00 ; ;TOTAL; ;33033,00 "@ }, @{ Nombre = 'Acta_reunion_marzo.txt' Contenido = @" ACTA DE REUNION - 12 de marzo ============================= Asistentes: Direccion, Sistemas, Administracion 1. Renovacion del contrato de mantenimiento Se aprueba la propuesta con un incremento del 4 por ciento. 2. Migracion del correo corporativo Sistemas presenta el calendario. La ventana de corte sera en abril, fuera del horario de atencion al publico. 3. Presupuesto del segundo trimestre Pendiente de cerrar las cifras de licencias. Administracion lo envia antes del dia 25. 4. Ruegos y preguntas Se solicita revisar los permisos de la carpeta compartida de contabilidad. "@ }, @{ Nombre = 'Factura_0142.txt' Contenido = @" FACTURA N. 0142 =============== Fecha: 08/03 Cliente: Compunet SpA CIF: B-00000000 Detalle ------- 1 x Servicio de soporte remoto (8 h) 480,00 1 x Configuracion de copias de seguridad 320,00 2 x Licencia de puesto adicional 190,00 Base imponible 990,00 IVA 21% 207,90 ------------------------------------------ TOTAL 1.197,90 Forma de pago: transferencia a 30 dias. "@ } ) # Y tres "Nuevo documento de texto", como los que quedan en cualquier escritorio foreach ($n in 1..3) { $relleno += @{ Nombre = ('Nuevo documento de texto ({0}).txt' -f $n); Contenido = "pendiente de revisar`n" } } $creados = 0 $saltados = 0 foreach ($f in $relleno) { $destino = Join-Path $Carpeta $f.Nombre if ((Test-Path -LiteralPath $destino) -and $SoloSiFaltan) { Escribir (" ya existe : {0}" -f $f.Nombre) 'Yellow' $saltados++ continue } if ($Nombres) { Escribir (" crearia : {0}" -f $f.Nombre) 'Cyan' $creados++ continue } Set-Content -LiteralPath $destino -Value $f.Contenido -Encoding UTF8 Escribir (" creado : {0} ({1} bytes)" -f $f.Nombre, (Get-Item -LiteralPath $destino).Length) 'Green' $creados++ } Escribir '' if ($Nombres) { Escribir ("Se crearian {0} fichero(s). Nada tocado, es solo un ensayo." -f $creados) 'Cyan' } else { Escribir ("Creados: {0} Saltados: {1}" -f $creados, $saltados) 'Cyan' Escribir 'Listo. La proxima ejecucion del impacto tendra que cifrar.' 'Cyan' Escribir '' Escribir 'Recuerda: los senuelos de Documentos los pone la siembra del ejercicio, no este script.' 'Yellow' }