Script do Win Server 2012 PowerShell 4 para copiar, renomear e tocar em um arquivo

Script do Win Server 2012 PowerShell 4 para copiar, renomear e tocar em um arquivo

Criei um script do PowerShell 4 para fazer backup do arquivo VbaProject.OTM do Outlook 2013, copiando-o do diretório de produção para um diretório de backup e adicionando um sufixo de nome de arquivo com a data e hora atuais. A versão copiada possui a data e hora modificadas de quando o VbaProject.OTM foi salvo pela primeira vez. Passei a manhã inteira pesquisando postagens tentando descobrir como alterar a propriedade Data de modificação do arquivo de backup para a data e hora atuais, mas tudo que tentei termina em mensagens de erro. Existe uma maneira simples de conseguir isso?

# FD_VBA_Backup.ps1
$date = get-date -format "MMddyyyy HHmm"
$fnft = "VbaProject - " + $date + ".OTM"
$source = "C:\Users\OCCReportManager\AppData\Roaming\Microsoft\Outlook\VbaProject.OTM"
$dest = "D:\FD Automation VBA Backups\" + $fnft
copy-item $source $dest  # results in eg. "VbaProject - 07202015 0936.OTM"

Houve uma pergunta semelhante sobre como criar um arquivo vazio e definir a propriedade de data. A solução para minha dúvida também estava em uma única linha, mas não foi fácil de encontrar. O título da outra pergunta não deixa óbvio que a solução possa ser encontrada, pois preciso alterar a data de um arquivo existente e não criar um novo arquivo. Referência: Equivalente ao Linux `touch` para criar um arquivo vazio com o PowerShell?.

Responder1

Com crédito para @DavidPostill:

# FD_VBA_Backup.ps1
$date = get-date -format "MMddyyyy HHmm"
$fnft = "VbaProject - " + $date + ".OTM"
$source = "C:\Users\OCCReportManager\AppData\Roaming\Microsoft\Outlook\VbaProject.OTM"
$dest = "D:\FD Automation VBA Backups\" + $fnft
copy-item $source $dest  # results in eg. "VbaProject - 07202015 0936.OTM"

(Get-ChildItem $dest).LastWriteTime = Get-Date

informação relacionada