Script de PowerShell para copiar archivos, iterar duplicados con diferente marca de tiempo e ignorar duplicados con la misma marca de tiempo

Script de PowerShell para copiar archivos, iterar duplicados con diferente marca de tiempo e ignorar duplicados con la misma marca de tiempo

Permítanme comenzar diciendo que realmente no conozco PowerShell. Soy ingeniero de automatización de procesos farmacéuticos por lo que mi experiencia es la programación de PLC y diseño de HMI. He escrito todo tipo de lenguajes pero de ninguna manera soy programador. Pero aquí es donde nos encontramos, intentando escribir código para una solución que se necesita y nadie más sabe cómo hacerlo.

Tengo dos carpetas. Uno con permisos NTFS sin restricciones y otro con permisos de solo lectura para todos excepto para el grupo de administradores locales. Necesito copiar archivos de la carpeta sin restricciones a la que tiene permisos de solo lectura. Iba a usar robocopy pero necesito incrementar los nombres de los archivos si existen en el destino con el mismo nombre pero con una marca de tiempo (diferente) y no copiarlos si la marca de tiempo es la misma. Robocopy no puede hacer eso.

Encontré un script de muestra que funciona para el incremento, pero no considera la marca de tiempo. El problema es que estoy usando el programador de tareas para activar este script cada vez que se imprime un PDF. El script mueve el PDF impreso de una carpeta a otra, pero el script actual seguirá haciendo nuevas copias con numeración incrementada cada vez que se ejecute. Eso no funcionará para lo que necesito. No conozco PowerShell lo suficientemente bien como para descubrir cómo hacer que considere la marca de tiempo e incremente los archivos con diferentes marcas de tiempo e ignore aquellos con la misma.

Aquí está el guión que tengo hasta ahora:

function fcopy ($SourceDir,$DestinationDir)
{
    Get-ChildItem $SourceDir -Recurse | Where-Object { $_.PSIsContainer -eq $false } | ForEach-Object ($_) {
        $SourceFile = $_.FullName
        $DestinationFile = $DestinationDir + $_
        if (Test-Path $DestinationFile) {
            $i = 0
            while (Test-Path $DestinationFile) {
                $i += 1
                $DestinationFile = $DestinationDir + $_.basename + $i + $_.extension
            }
        } else {
            Copy-Item -Path $SourceFile -Destination $DestinationFile -Verbose -Force
        }
        Copy-Item -Path $SourceFile -Destination $DestinationFile -Verbose -Force
    }
}
fcopy -SourceDir "C:\SoloVPE\UV1325A_Reports\" -DestinationDir "C:\UV1325A_Reports_Share\"

información relacionada