Created
December 4, 2020 11:14
-
-
Save raulunzue/47d85dc6e91473825cf0f4eef5607142 to your computer and use it in GitHub Desktop.
Powershell: Copia datos incrementales a USB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
####################################### | |
## RAUL UNZUE - ELBLOGDENEGU | |
## 02/12/2020 | |
## SCRIPT COPIADO INCREMENTAL PERFIL | |
####################################### | |
#CERRAR OUTLOOK | |
#Bucle que solicita cerrar Outlook hasta que no detecta ningun proceso outlook corriendo | |
#Para que deje copiar PSTs Outlook tiene que estar cerrado | |
Do { | |
Write-Host "" | |
Write-Host "Por favor, es necesario cerrar Outlook antes de ejecutar el script." | |
pause | |
$outlookproc=Get-Process | Where-Object { $_.Name -eq "outlook" } | |
}Until ($outlookproc.count -eq 0) | |
## SABER RUTA | |
$ruta=pwd | |
## SABER EL USUARIO | |
$u=C:\windows\system32\whoami.exe | |
## ELIMINAR DOMINIO | |
$posicion = $u.IndexOf("\") | |
$posicion = $posicion+1 | |
$usuario = $u.substring($posicion, $u.Length - $posicion) | |
## CARGAMOS ORIGEN Y DESTINO | |
$origen="c:\Users\$usuario" | |
$destino="$ruta$usuario\Perfil" | |
Start-Transcript -Path "$ruta\copia-$usuario.log" | |
## GENERAMOS RUTA EN EL DISCO USB PARA EL USUARIO | |
New-Item -Path $destino -ItemType Directory -Force | |
## SABER DIRECTORIOS Y FICHEROS LOCALES MODIFICADOS A PARTIR DE UNA FECHA | |
# DIRECTORIOS | |
#Últimos directorios modificados | |
$dir= Get-ChildItem -Path $origen -Recurse -Directory | Where-Object {$_.LastWriteTime -gt "12/02/2020" -OR $_.LastAccessTime -gt "12/02/2020"} | |
#Contar los directorios | |
$dircount = $dir.fullname.count | |
# FICHEROS | |
#Últimos ficheros modificados | |
$file = Get-ChildItem -Path $origen -Recurse -File | Where-Object {$_.LastWriteTime -gt "12/02/2020" -OR $_.LastAccessTime -gt "12/02/2020"} | |
#Contar los ficheros | |
$filecount = $file.fullname.count | |
## GENERAR DIRECTORIOS Y COPIAR DATOS | |
for ($i = 0; $i -le $dircount; $i++){ | |
# Extraemos cada directorio del listado | |
$dr=$dir.Item($i).FullName | |
Write-Output "Directorio que se va a generar $dr" | |
# Tratamos el dato | |
$dr > "$destino\dr-$usuario-$i.txt" | |
(Get-Content -Path "$destino\dr-$usuario-$i.txt") -replace ($usuario, "") -replace ("c:", "") -replace ("Users", "") | Set-Content -Path "$destino\dr-$usuario-$i.txt" | |
(Get-Content -Path "$destino\dr-$usuario-$i.txt") -replace ('\\\\\\', "") | Set-Content -Path "$destino\dr-$usuario-$i.txt" | |
(Get-Content -Path "$destino\dr-$usuario-$i.txt") | ? {$_.trim() -ne "" } | Set-Content -Path "$destino\dr-$usuario-$i.txt" | |
[string]$d=(Get-Content -Path "$destino\dr-$usuario-$i.txt") | |
# Validación que existe | |
$testd= Test-Path -Path $destino\$d | |
# Si no existe generamos la copia | |
if ($testd -eq $False){ | |
# Generamos los directorios | |
Write-Output "Se genera el directorio en la ruta $destino\$d" | |
New-Item -Path $destino\$d -ItemType Directory -Force | |
for ($x = 0; $x -le $filecount; $x++){ | |
# Extraemos la ruta del fichero a copiar | |
[string]$fi=$file.Item($x).FullName | |
[string]$f=$file.Item($x).Name | |
# Validamos que existe el fichero | |
Write-Output "Fichero que podemos copiar $fi" | |
$existe=("$fi" | sls -Pattern "$d\$f" -CaseSensitive -SimpleMatch) | |
# Si la ruta del fichero contiene la que contienen los directorios, se copia el fichero | |
if ($existe -ne $null){ | |
Write-Output "Existe la ruta, se copia fichero $file.Item($x).Name en el directorio $destino\$d" | |
Copy-Item -Path "$fi" -Destination "$destino\$d" -Filter *.txt -Recurse -Force -PassThru | |
} | |
# Sino, no se copia | |
else{ | |
Write-Output "No hay más ficheros que copiar en el directorio $destino\$d" | |
} | |
} | |
} | |
# Si existe no realizamos la copia | |
else{ | |
Write-Output "No existen más directorios que generar" | |
} | |
#BORRAMOS FICHERO TXT DE PRECARGA | |
Remove-Item -Path "$destino\dr-$usuario-$i.txt" | |
} | |
Stop-Transcript | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment