param ([string]$startDir = ".\", [string]$logFile = ".\pkgdef_match.log", $fileSize=1mb) function Write-Log { param([string]$content) $formattedContent = "[" + [System.DateTime]::UtcNow.ToString() + "] " + $content Write-Output $formattedContent [System.IO.File]::AppendAllText($logfile, $formattedContent + [System.Environment]::NewLine) } function Reset-Log { #function checks to see if file in question is larger than the paramater specified if it is it will roll a log and delete the oldes log if there are more than x logs. param([string]$fileName, [int64]$filesize = 1mb , [int] $logcount = 5) $logRollStatus = $true if(test-path $filename) { $file = Get-ChildItem $filename if((($file).length) -ige $filesize) #this starts the log roll { $fileDir = $file.Directory $fn = $file.name #this gets the name of the file we started with $files = Get-ChildItem $filedir | ?{$_.name -like "$fn*"} | Sort-Object lastwritetime $filefullname = $file.fullname #this gets the fullname of the file we started with #$logcount +=1 #add one to the count as the base file is one more than the count for ($i = ($files.count); $i -gt 0; $i--) { #[int]$fileNumber = ($f).name.Trim($file.name) #gets the current number of the file we are on $files = Get-ChildItem $filedir | ?{$_.name -like "$fn*"} | Sort-Object lastwritetime $operatingFile = $files | ?{($_.name).trim($fn) -eq $i} if ($operatingfile) {$operatingFilenumber = ($files | ?{($_.name).trim($fn) -eq $i}).name.trim($fn)} else {$operatingFilenumber = $null} if(($operatingFilenumber -eq $null) -and ($i -ne 1) -and ($i -lt $logcount)) { $operatingFilenumber = $i $newfilename = "$filefullname.$operatingFilenumber" $operatingFile = $files | ?{($_.name).trim($fn) -eq ($i-1)} write-host "moving to $newfilename" move-item ($operatingFile.FullName) -Destination $newfilename -Force } elseif($i -ge $logcount) { if($operatingFilenumber -eq $null) { $operatingFilenumber = $i - 1 $operatingFile = $files | ?{($_.name).trim($fn) -eq $operatingFilenumber} } write-host "deleting " ($operatingFile.FullName) remove-item ($operatingFile.FullName) -Force } elseif($i -eq 1) { $operatingFilenumber = 1 $newfilename = "$filefullname.$operatingFilenumber" write-host "moving to $newfilename" move-item $filefullname -Destination $newfilename -Force } else { $operatingFilenumber = $i +1 $newfilename = "$filefullname.$operatingFilenumber" $operatingFile = $files | ?{($_.name).trim($fn) -eq ($i-1)} write-host "moving to $newfilename" move-item ($operatingFile.FullName) -Destination $newfilename -Force } } } else { $logRollStatus = $false} } else { $logrollStatus = $false } $LogRollStatus } $resetResult = Reset-Log -fileName $logFile -filesize $fileSize -logcount 5 Write-Log -content ("Starting Package Def Search in " + $startDir) Get-ChildItem -Path $startDir -Filter *.pkgdef -Recurse -Depth 100 -File -Name| ForEach-Object { $file = $_ $exePair = $file $exePair = $exePair.ToLower().Replace(".pkgdef",".exe") $exePair = [System.IO.Path]::Combine($startDir, $exePair) if([System.IO.File]::Exists($exePair)) { Write-Log -content ("Found Matching EXE: " + $exePair) } } Write-Log -content "Finished Package Def Search."