Solved

PowerShell, deleting files using last modified and last accessed

Posted on 2016-11-11
7
62 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
Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

 
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

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

Question has a verified solution.

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

This script checks a path to see if a folder exists. If the folder does exist you will get output "The folder has previously been created. No action taken" If not it will create the folder. Then adds one user modify permission to the folder. It …
This article explains how to prepare an HTML email signature template file containing dynamic placeholders for users' Azure AD data. Furthermore, it explains how to use this file to remotely set up a department-wide email signature policy in Office …
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

840 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