Gostaria que o script do PowerShell abaixo criasse um arquivo de log que contivesse informações sobre quantos arquivos foram movidos em cada pasta e a exceção de erro / código de manipulação no caso de falha no script para executar a reversão automaticamente.
Abaixo, o código é usado para mover arquivos de acordo com a data da última modificação e cria uma pasta no formato YYYYMM no mesmo caminho. Por exemplo, suponha que a data da última modificação do arquivo seja qualquer data de dez-2016, então ele moverá esse arquivo para a pasta 201612 depois de criar essa pasta e zipar a pasta e removê-la.
Preciso de ajuda para que esse código gere um arquivo de log com quantos arquivos foram movidos e, se o código falhar, ele deverá ser revertido.
Alguém por favor pode me ajudar com isso?
Param
(
$FolderPath = "D:\newfolder\*.*",
$ErrorActionPreference = "Stop"
)
$ChildItems = Get-ChildItem $FolderPath -Include *.txt,*.xml
$DestFolders = @()
foreach ($item in $ChildItems) {
if ((($item.LastWriteTime).Month -ne (Get-Date).Month) -or (($item.LastWriteTime).Year -ne (Get-Date).Year)) {
$FolderName = $(Get-Date $item.LastWriteTime -f "yyyyMM").ToString()
$DestFolder = ($item.Directory.ToString() + "\" + $Foldername)
$DestFolders += $DestFolder
if (-not (Test-Path $DestFolder)) {
try {
New-Item $DestFolder -ItemType Directory -ErrorAction Stop
} catch {
throw $Error[0]
}
}
try {
Move-Item $item -Destination $DestFolder -ErrorAction Stop
} catch {
throw $Error[0]
}
}
}
foreach ($item in ($DestFolders | Sort-Object | Get-Unique)) {
try {
Add-Type -Assembly System.IO.Compression.FileSystem
$CompressLevel = [System.IO.Compression.CompressionLevel]::Optimal
$SourceFolder = $item
$DestFileName = ($item + ".zip")
[System.IO.Compression.ZipFile]::CreateFromDirectory($SourceFolder, $DestFileName, $CompressLevel, $false)
Remove-Item $SourceFolder -Recurse -ErrorAction Stop
} catch {
throw $Error[0]
}
}
Tags windows automation powershell