Solved

PowerShell, deleting files using last modified and last accessed

Posted on 2016-11-11
7
52 Views
Last Modified: 2016-11-16
I had this question after viewing PowerShell, deleting files from multiple servers.

I had help with the below script to delete files from multiple servers. However, i now realize that some files are being used and need to delete files where the last acccessed time is less than x days and modified time is less than x days.

$User = "user"
$Password = Get-Content "D:\NCR\DAX\Scripts\psPW" | ConvertTo-SecureString

$Creds = New-Object System.Management.Automation.PsCredential -ArgumentList $user, $Password

$Servers = Get-Content D:\NCR\DAX\Scripts\servers.txt 
# When you run an Invoke-Command command, Windows PowerShell runs the commands on all of the specified computers or in all of the specified PSSessions.This method will delete from all servers at the same.
Invoke-Command -ComputerName  $Servers -Credential $Creds -ScriptBlock {
  $date = (Get-Date).AddDays(-5)
  Set-Location 'c:\Users\dax\AppData\Local\Temp'
  Get-ChildItem -File | Where-Object {$_.LastWriteTime -lt $date} | Remove-Item -Force
}

Invoke-Command -ComputerName  $Servers -Credential $Creds -ScriptBlock {
  $date = (Get-Date).AddDays(-8)
  Set-Location 'C:\Windows\Temp'
  Get-ChildItem -File | Where-Object {$_.LastWriteTime -lt $date} | Remove-Item -Force
}

Open in new window

0
Comment
Question by:jacobJL
  • 4
  • 2
7 Comments
 
LVL 14

Accepted Solution

by:
Jason Crawford earned 250 total points
ID: 41883945
If I'm understanding the requirements correctly, you should be able to just modify line 11 to this:

Get-ChildItem -File | Where-Object {$_.LastWriteTime -lt $date -and $_.LastAccessTime -lt $date} | Remove-Item -Force

Open in new window

0
 

Author Comment

by:jacobJL
ID: 41884059
SMH. That's exactly what i had but i forgot hyphen in front of the and operator. However after corrected i still get this error

Cannot remove item C:\Windows\Temp\vmware-vmsvc.log: The process cannot access the file 'C:\Windows\Temp\vmware-vmsvc.log' because it is being used by another process.
    + CategoryInfo          : WriteError: (C:\Windows\Temp\vmware-vmsvc.log:FileInfo) [Remove-Item], IOException
    + FullyQualifiedErrorId : RemoveFileSystemItemIOError,Microsoft.PowerShell.Commands.RemoveItemCommand
0
 

Author Comment

by:jacobJL
ID: 41884063
Oh. I just realized last accessed isn't the problem here. his file says last accessed in February. Not sure how its being used by another process, but i am thinking i need to exclude this file from the delete script
0
Optimizing Cloud Backup for Low Bandwidth

With cloud storage prices going down a growing number of SMBs start to use it for backup storage. Unfortunately, business data volume rarely fits the average Internet speed. This article provides an overview of main Internet speed challenges and reveals backup best practices.

 
LVL 14

Expert Comment

by:Jason Crawford
ID: 41884085
Looks like VMware logging.  We can exclude open files or *.log or both.
0
 

Author Comment

by:jacobJL
ID: 41884113
and would that be done like this

Invoke-Command -ComputerName  $Servers -Credential $Creds -ScriptBlock {
  $date = (Get-Date).AddDays(-5)
  Set-Location 'c:\Users\dax\AppData\Local\Temp'
  Get-ChildItem -File  -exclude .log | Where-Object {$_.LastAccessTime -lt $date} | Remove-Item -Force -WhatIf
}

How would you exclude open files?
0
 
LVL 69

Assisted Solution

by:Qlemo
Qlemo earned 250 total points
ID: 41886104
You'll need to use -exclude *.log - it needs to be a file mask, no substring match.
The brute force approach to get over open files is to just ignore the error message. Add -ea SilentlyContinue to the remove-item.
0
 

Author Closing Comment

by:jacobJL
ID: 41890028
Sorry for late response, was still running into issues but i figured it out. This is what i needed. thank you.
0

Featured Post

Problems using Powershell and Active Directory?

Managing Active Directory does not always have to be complicated.  If you are spending more time trying instead of doing, then it's time to look at something else. For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

In this previous article (https://oddytee.wordpress.com/2016/05/05/provision-new-office-365-user-and-mailbox-from-exchange-hybrid-via-powershell/), we made basic license assignments to users in O365. When I say basic, the method is the simplest way …
A brief introduction to what I consider to be the best editor for PowerShell.
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

785 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question