Altere a “data de modificação” de uma pasta (possivelmente no powershell)

0

Ocasionalmente, quando forço o desligamento de uma máquina com Windows Server 2003 (não tenho escolha), as pastas contidas em um determinado diretório alteram a 'data de modificação' para a data atual.

Felizmente, dentro de cada uma dessas pastas, os arquivos estão todos com a 'data de modificação' correta.

Um desses arquivos que eu quero copiar a "data modificada (ou criada)" é um arquivo .jdf que cada uma das pastas tem dentro.

Preciso de ajuda para criar um script no PowerSell.

Eu encontrei este script PS1 que quase faz o trabalho:

Get-ChildItem $root | Where-Object {$_.PSIsContainer} | Foreach-Object{

# get the oldest file for the current directory object
$oldest = Get-ChildItem $_.FullName | Sort-Object LastWriteTime | Select-Object LastWriteTime -Last 1

if($oldest)
{
# oldest object found, set current directory LastWriteTime
$_ | Set-ItemProperty -Name CreationTime -Value $oldest.LastWriteTime 
$_ | Set-ItemProperty -Name LastWriteTime -Value $oldest.LastWriteTime
}
else
{
# current directory is empty, directory LastWriteTime is left unchanged
Write-Warning "Directory '$($_.FullName)' is empty, skiping..."
}
}

O problema é que o último objeto modificado dentro das pastas às vezes são subpastas que também obtêm a data atual como 'data de modificação'. Como posso fazer com que pareça os arquivos dentro da pasta e não as pastas?

    
por poupou 10.06.2015 / 11:00

1 resposta

0

Considerando que Get-ChildItem $root -directory fornece o mesmo resultado que

Get-ChildItem $root | Where-Object {$_.PSIsContainer}

você poderia tentar (não sei a sintaxe detalhada PS )

Get-ChildItem $root -file

ou até mesmo

gci $root -file

Não tenho certeza se o restante do seu script precisa ser melhorado ...

    
por 10.06.2015 / 14:26