# encoding: ascii
# api: powershell
# title: Robocopy Analyser
# description: Search true log files generated by Robocopy for error / success messages
# version: 0.1
# type: function
# author: vanwyngaarden
# license: CC0
# function: Analyse-Robocopy
# x-poshcode-id: 5787
# x-archived: 2016-03-05T05:30:27
# x-published: 2016-03-16T15:12:00
#
#
function Analyse-Robocopy {
<#
.Synopsis
This function analyse output logging for robocopy
.Description
This function analyse output logging for robocopy
.Example
Analyse-Robocopy -sourcefile d:\robocopy.log -resultfile d:\robocopy-result.log -messages Error
This command wil generate a new logfile with all Error messages found in sourcefile
.Example
Analyse-Robocopy -sourcefile d:\robocopy.log -messages Error
This command wil generate a new logfile with all Error messages found in sourcefile and place it in C:\temp\Robocopy-Analyse.log
when the folder C:\Temp not exist the folder will be created
.Parameter sourcefile
The name and location of the file you want to analyse
.Parameter resultfile
The location where the result will be saved.
Default value is c:\Temp\Robocopy-Analyse.log
.Parameter Messages
specify the sort messages you want to find
Default value is Error
.Notes
NAME: Analyse-Robocopy
AUTHOR: Marco van Wyngaarden
LASTEDIT: 03/16/2015 14:40
KEYWORDS: Robocopy, Analyser
.Link
http://vanwyngaarden.eu/powershell/robocopy-analyser
#>
Param(
[Parameter(Position=0, Mandatory=$True, ValueFromPipeline=$True)] [string]$sourcefile,
$resultfile = "c:\temp\robocopy-Analyse.log",
[ValidateSet("Error","success")] [String] $messages = "Error"
)
#check if resultfile is given otherwise fill resultfile with default value
if ($resultfile -eq "c:\temp\robocopy-Analyse.log"){
if (!(Test-Path -Path "c:\temp")){
New-Item -ItemType directory -Path "c:\temp" | Out-Null
}
}
#check message type and search logfile
if ($messages -eq 'Error'){
$output = Get-ChildItem $sourcefile | Select-String -Pattern '(error 123)| (error 32)'
$output | Out-File $resultfile -Width 1200
}
else{
$output = Get-ChildItem $sourcefile | Select-String -Pattern '(New File) | (New Dir )'
$output | Out-File $resultfile -Width 1200
}
Write-Host " ------------------------------------------------"
Write-Host " ROBOCOPY LOG ANALYSER "
Write-Host " ------------------------------------------------"
Write-Host " "
Write-Host "" Counted $output.count $messages messages.""
Write-Host "" Results are saved in $resultfile""
Write-Host " "
Write-Host " ------------------------------------------------"
}