# You can write debug, error, verbose, info etc messages. # They will appear in EFT.log # # Make sure that PowerShell doesn't skip messages # $DebugPreference = "Continue" # $VerbosePreference = "Continue" # # You can access all EFT context variables via $EFT_CONTEXT # # Get context variable and output it to debug log: # write-debug $EFT_CONTEXT.GetVariable("SITE.NAME") # # Create a new context variable # $EFT_CONTEXT.SetVariable("custom_variable", "this a custom variable") # # Modify a context variable # $EFT_CONTEXT.SetVariable("custom_variable", "this is a modified value"); <# .SYNOPSIS Watchdog Script that will send a notification if a folder gets too full. .DESCRIPTION The Script will Send E-Mail for folders with files over a specified amount. This ammount is controlled by the $filelimit variable. The script supports searching multiple directories; The folders will need to be inserted into the array $folderlist. Change the SMTP server variable block to work in your environment. .AUTHOR Jonathan Branan .WARRANTY This script is provided with no warranty and is not garunteed to work. Globalscape, Helpsystems or the Author assume NO responsibility for the outcome of running the script. #> # List of folders to parse. Delimit by commas, make sure the paths are in double quotes. $folderlist = @("\\ik5n4mu4e27gmfilesa.file.core.windows.net\gsbdata\InetPub\EFTRoot\MySite\Usr\FTPISO\Archive") # Minimum of files in a directory before the notfication is sent. $filelimit = 2 #SMTP Server Block # CHANGE ME $smtpserver = "mail.globalscape.com" $from = "watchdog@server.com" $to = "jonathan.branan@helpsystems.com" $subject = "Folder Watch Dog" $port = 25 $data = ForEach($Folder in $folderlist){ Get-ChildItem $Folder -Directory -Recurse| ForEach-Object{ [pscustomobject]@{ FullName = $_.Fullname.ToLower() FileCount = $_.GetFiles().Count # Filters } | Where-Object {$_.FileCount -ge $filelimit} } } # Building a table $tbl = New-Object System.Data.DataTable "FileCount" $col1 = New-Object System.Data.DataColumn FullName $col2 = New-Object System.Data.DataColumn FileCount $tbl.Columns.Add($col1) $tbl.Columns.Add($col2) ForEach($array in $data){ $row = $tbl.NewRow() $row.FullName = $array.FullName $row.FileCount = $array.FileCount $tbl.Rows.Add($row) } # Formatting the table so we can email it $html = $tbl | Select-Object Fullname, Filecount | ConvertTo-Html -Property FullName, FileCount -Title 'Folders reaching the file limit' $body = "Hi there,
Folders reaching the limit:

" + $html #Send the email Send-MailMessage -smtpserver $smtpserver -Port $port -from $from -to $to -subject $subject -body $body -bodyashtml #You can comment out Send-MailMessage and uncomment out the next line if you wish to debug filters #$tbl | Select-Object Fullname, Filecount