bloodywicked
asked on
PowerShell script to remove temp files and folders
Hello everyone,
I'm very new to PS scripting, and i was hoping to get some help on creating a script that will do the following:
* access a remote computer
* parse through all users profiles (specifically %temp%/SAS Temporary folder) folder
* delete any files that are older than than 2 days
* email me a report with the amount of space freed due to the deletion of those temp files in that "SAS Temporary Folder" folder
please let me know if you need more details, and thanks in advance
I'm very new to PS scripting, and i was hoping to get some help on creating a script that will do the following:
* access a remote computer
* parse through all users profiles (specifically %temp%/SAS Temporary folder) folder
* delete any files that are older than than 2 days
* email me a report with the amount of space freed due to the deletion of those temp files in that "SAS Temporary Folder" folder
please let me know if you need more details, and thanks in advance
OS?
Here is one that should work against XP and 2003
If it works as you expect then remove the -whatif from remove-item
If it works as you expect then remove the -whatif from remove-item
$tempfolders = dir "\\$server\c$\documents and settings" -rec -force | ?{$_.PSIsContainer -and ($_.Name -eq "temp")}
foreach($folder in $tempfolders)
{
$files = $folder.GetFiles() | ?{$_.LastWriteTime -lt (get-Date).adddays(-2)}
foreach($file in $files)
{
$SavedSpace += $file.length
$file.FullName | remove-Item -whatif -force
}
}
"Total Space Saved: {0:n2}MB" -f ($SavedSpace/1mb)
ASKER
Hello BSonPosh,
thank you so much for you prompt respond. the OS is windows XP. However when i ran the script i got the following error.
PSerror.bmp
thank you so much for you prompt respond. the OS is windows XP. However when i ran the script i got the following error.
PSerror.bmp
ASKER
i also have this script which i created with the help of an awesome book called "Powershell in Action", but i was hoping to get a loop in there instead of having to set two different Paths.
also, I'm not sure if this code will parse through the folders that are located with the %temp% folder for each user profile.
thank you
also, I'm not sure if this code will parse through the folders that are located with the %temp% folder for each user profile.
thank you
$path0 = "\\bai-sas1\c$\Documents and Settings\cwu\Local Settings\Temp\"
$path1 = "\\bai-sas1\c$\Documents and Settings\ehendarwan\Local Settings\Temp\"
$days = 2
get-ChildItem $path0,$path1 |Where-Object{$_.LastmodifiedTime -lt (get-Date).adddays(-$days)}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
strange, this one seems to work fine, and it added the amount of space that would be freed. can i add like a mailto: line that way i can get this information email to me ..
or do i need to echo that output into a txt file then email that
or do i need to echo that output into a txt file then email that
You can get a send-smtpmail cmdlet from here http://www.codeplex.com/PowerShellCX/Release/ProjectReleases.aspx?ReleaseId=2688
Or you can use something like this
Or you can use something like this
$SmtpClient = new-object system.net.mail.smtpClient
$SmtpServer = "localhost"
$SmtpClient.host =
$SmtpServer
$From = "Friendly Reminder <User@example.com>"
$To = User2@example.com
$Title = "Subject Matter"
$Body = "Body Text"
$SmtpClient.Send($from,$to,$title,$Body)