Before I get into the script, I'd like to thank Ben for writing the actual action part of the script.
I have made modifications so that it runs where I want it to run and emails me if there are any results. Here it is:
#Let's find some long filenames
$files=Get-Childitem F:\ -Recurse
#Change Outpath to where you want log.
$Outpath = "C:\Temp\LongFiles.txt"
#MAIN SCRIPT
foreach ($file in $files)
{
if ($file.pspath.substring(38).length -gt 240)
{
if($File.Attributes -like "Directory*")
{
Write-Output ($File.PSPath.substring(38) + " is " + $File.Name.Length + " Characters Long, and it is a directory! The total path length is " + ($File.PSPath.Substring(38).length) + ".") >> $Outpath
} #End If
else
{
Write-Output ($File.PSPath.substring(38) + " is " + $File.Name.Length + " Characters Long, and it is a file! The total path length is " + ($File.PSPath.Substring(38).length) + ".") >> $Outpath
} #End Else
} #End If
} #End Foreach
#Email Parameters
$smtpserver = "mailserver.contoso.com"
$From = "administrator@contoso.com"
$To = "me@contoso.com"
$Subject = "PS Report - Long Filenames from <servername>"
$body = (Get-content $outpath | out-string)
If ((Test-Path $outpath) -eq $True){
Send-Mailmessage -from $From -to $To -subject $Subject -smtpserver $smtpserver -body $body
} #End If
#Delete the log file
Remove-Item $outpath
So, a couple of things to mention about this:
- Change the get-childitem path to the one you wish to scour.
- Make sure you have a c:\temp path for the log file or change the output logfile's path.
- Change the email parameters.
- In the first 'If' statement, I changed his script to output anything over 240 characters in length, because that's all I really care about.
- Make sure you have access to the files or the script won't search those files/folders.
I then set up a scheduled task to run the script every morning. The "Sending the email" portion tests to see if a logfile exists. If there is no logfile, then there are no files that meet the criteria (over 240 chars).
As is good practice, if there is nothing to say, the script does not email me. I have enough emails to dig through every day....
hello
ReplyDeleteyou can use long path tool to sort out this problem
__________________