Memo

Migrar PC antigua a nueva PC de un empleado

Contexto

No soy profesor, estas son mis propias notas, las de un estudiante insignificante, Aaron (Iso) Pescasio.

Durante mi primer aprendizaje de trabajo/estudio, tuve que migrar alrededor de treinta PC de empleados de máquinas antiguas a nuevas.

Así que decidí crear estos scripts para simplificar y automatizar todo el proceso.

Step-by-step Script Breakdown

Total script estimation: ~27s.

Registro de Ejecución (PC Antigua)

Crea una entrada de registro con el nombre de usuario y la fecha de ejecución para mantener un registro de la migración (~2 segundos).

Crear Carpeta de Migración en Red

Verifica si existe una carpeta personal de migración en el recurso compartido de red. Si no existe, la crea automáticamente (~3 segundos).

Exportar Marcadores de Chrome

Verifica si existe el archivo de marcadores de Chrome. Si existe, lo copia a la carpeta de migración (~2 segundos).

Exportar Marcadores de Edge

Mismo principio que Chrome: los marcadores de Edge se copian si existen (~2 segundos).

Exportar Firmas de Outlook

Si la carpeta de firmas existe, su contenido se guarda en la carpeta de red (~3 segundos).

Exportar Lista de Impresoras

Obtiene las impresoras instaladas en la PC antigua y las exporta a un archivo .csv (~2 segundos).

Registro de Ejecución (PC Nueva)

Se crea una segunda entrada de registro cuando el script se ejecuta en la PC nueva para asegurar la trazabilidad (~2 segundos).

Importar Marcadores de Chrome

Restaura los marcadores de Chrome desde la carpeta de red al directorio local correcto (~2 segundos).

Importar Marcadores de Edge

Mismo procedimiento que Chrome: copia los marcadores de Edge al directorio del usuario (~2 segundos).

Importar Firmas de Outlook

Crea la carpeta de firmas si aún no existe, luego importa los archivos guardados (~3 segundos).

Reinstalar Impresoras

Lee la lista de impresoras del archivo .csv e instala cada una si no está ya instalada (~4 segundos).

PowerShell Script

export_oldPC.ps1
### © Aaron (Iso) Pescasio / www.apescasio.fr ###

### Un script de "exportación" para ejecutar en la PC antigua para exportar: firmas de Outlook, impresoras, marcadores de Chrome/Edge... y copiarlos en la carpeta de almacenamiento personal en red del usuario ###

$username23 = "$env:USERDOMAIN\$env:USERNAME"
$date23 = Get-Date -Format "dd/MM/yyyy à HH:mm:ss"
$log23 = "$username23 ejecutó el script: export_ancienPC.bat el $date23"
Add-Content -Path "\\adds01\soft\ap_script\ap_script_logs\export_ancienPC.log" -Value $log23

### Si la carpeta MigrationP5_username no existe => Crearla, pero si ya existe, registrar un mensaje ###

if (!(Test-Path -Path "\\adds01\personnel\$env:USERNAME\MIGRATIONP5_$env:USERNAME" -PathType Container)) {
    New-Item -Type Directory "\\adds01\personnel\$env:USERNAME\MIGRATIONP5_$env:USERNAME"
} else {
    Write-Output "La carpeta 'MigrationP5_$env:USERNAME' ya existe"
}

### Si el archivo de Marcadores (Chrome) no existe => Registrar un mensaje, pero si existe, copiarlo en la carpeta de almacenamiento personal en red ###

if (!(Test-Path -Path "$env:localappdata\Google\Chrome\User Data\Default\Bookmarks")) {
    Write-Output "Los marcadores de Google Chrome no existen"
} else {
    Copy-Item "$env:localappdata\Google\Chrome\User Data\Default\Bookmarks" "\\adds01\personnel\$env:USERNAME\MIGRATIONP5_$env:USERNAME\Bookmarks_ch" -Force
}

### Si el archivo de Marcadores (Edge) no existe => Registrar un mensaje, pero si existe, copiarlo en la carpeta de almacenamiento personal en red ###

if (!(Test-Path -Path "$env:localappdata\Microsoft\Edge\User Data\Default\Bookmarks")) {
    Write-Output "Los marcadores de Microsoft Edge no existen"
} else {
    Copy-Item "$env:localappdata\Microsoft\Edge\User Data\Default\Bookmarks" "\\adds01\personnel\$env:USERNAME\MIGRATIONP5_$env:USERNAME\Bookmarks_ms" -Force
}

### Si no hay firmas de Outlook => Registrar un mensaje, pero si existen, copiarlas en la carpeta de almacenamiento personal en red ###

if (!(Test-Path -Path "$env:appdata\Microsoft\Signatures" -PathType Container)) {
    Write-Output "Las firmas de Outlook no existen"
} else {
    Copy-Item "$env:appdata\Microsoft\Signatures" "\\adds01\personnel\$env:USERNAME\MIGRATIONP5_$env:USERNAME\" -Recurse -Force
}

### Exportar impresoras (copiar la lista de impresoras de la PC antigua, luego pegarla en la carpeta de almacenamiento personal en red) ###

get-printer "\\imprimant.share.loc\*" | Select-Object Name | Export-Csv -Path "\\adds01\personnel\$env:USERNAME\MIGRATIONP5_$env:USERNAME\ecoleprinters.csv" -NoTypeInformation

PowerShell Script 2

import_oldPC.ps1
### © Aaron (Iso) Pescasio / www.apescasio.fr ###

### Script (para ejecutar en la PC nueva) para importar: firmas de Outlook, impresoras, marcadores de Chrome/Edge... ¡en el disco de la nueva PC! ###

$username23 = "$env:USERDOMAIN\$env:USERNAME"
$date23 = Get-Date -Format "dd/MM/yyyy à HH:mm:ss"
$log23 = "$username23 ejecutó el script: import_nouveauPC.bat el $date23"
Add-Content -Path "\\adds01\soft\ap_script\ap_script_logs\import_nouveauPC.log" -Value $log23

### Importar Marcadores => Chrome ###

Copy-Item "\\adds01\personnel\$env:USERNAME\MIGRATIONP5_$env:USERNAME\Bookmarks_ch" "$env:localappdata\Google\Chrome\User Data\Default\Bookmarks" -Force

### Importar Marcadores => Edge ###

Copy-Item "\\adds01\personnel\$env:USERNAME\MIGRATIONP5_$env:USERNAME\Bookmarks_ms" "$env:localappdata\Microsoft\Edge\User Data\Default\Bookmarks" -Force

### Importar Firmas de Outlook ###

if (!(Test-Path -Path "$env:appdata\Microsoft\Signatures" -PathType Container)) {
    New-Item -Type Directory "$env:appdata\Microsoft\Signatures"
    Copy-Item "\\adds01\personnel\$env:USERNAME\MIGRATIONP5_$env:USERNAME\Signatures\*" "$env:appdata\Microsoft\Signatures" -Force
} else {
    Copy-Item "\\adds01\personnel\$env:USERNAME\MIGRATIONP5_$env:USERNAME\Signatures\*" "$env:appdata\Microsoft\Signatures" -Force
}

### Importar impresoras en la PC nueva ###

$Printers = Import-Csv -Path "\\adds01\personnel\$env:USERNAME\MIGRATIONP5_$env:USERNAME\ecoleprinters.csv"
foreach ($Printer in $Printers)
{
    $PrinterName = $Printer.Name
    if (Get-Printer -Name $PrinterName 2>$null)
    {
        Write-Host "¡La impresora $PrinterName ya está instalada!"
    } else {
        Add-Printer -ConnectionName $PrinterName
    }
}

Última actualización: