How to use PowerShell to check modified files or files on a
particular folder?
If you ever find yourself in a situation, to monitor file or
files that was changed or modified, for the last few minutes.
PowerShell will be able to solve the issue.
This would be very useful in an environment where a file is shared by a group of people and anyone can access or modified the file.
This would be very useful in an environment where a file is shared by a group of people and anyone can access or modified the file.
In order to check or keep track whether the file has been
changed, PowerShell script is able to monitor and send an email to alert that
the file has been modified.
Use the script below and run it on Task Scheduler, at an interval
of every hour if the $xminutes is set to 60.
But of course if you want to check for every 30 minutes,
then task scheduler should also be set to run every 30 minutes.
How to run the script below on PowerShell?
Use this command on Task Scheduler to run a PowerShell
script.
PowerShell –file “c:\path_to_your_PS_script\PowerShell_Name.ps1
-noexit
Script below is the PowerShell script to monitor modified
files or file on a particular path specified.
====================START of Code
Snippet=====================
#number of minutes since the file has been changed
#it will monitor for the modified file or files during the last 60 minutes
$xminutes = "60"
#it will monitor for the modified file or files during the last 60 minutes
$xminutes = "60"
#a UNC path can be used as a path if file/files being
monitored are on a network
#$xPath ="\\FileServer\shared\*.*"
#just specify the path if the file is monitored locally
#$xPath="d:\shared\*.*"
#$xPath="d:\shared\*.*"
#will monitor for any modified XML or text files on the
specified path
#$xfile = Get-ChildItem -Path $xPath -Filter *.txt | Where-Object - will filter for *.txt only
# ? - is an Alias for for Where-Object
#$xfile = Get-ChildItem -Path $xPath -Filter *.txt | ? - will filter for *.txt only
#$xfile = Get-ChildItem -Path $xPath -Include *.txt, *.xml | ? - if need to filter two or more file extensions
#=====================
#check for modified files for the last 60 minutes
#$xminutes has value of 60, change the variable to your desired value
$xfile = Get-ChildItem -Path $xPath -Filter *.txt | ? {
#$xfile = Get-ChildItem -Path $xPath -Filter *.txt | Where-Object - will filter for *.txt only
# ? - is an Alias for for Where-Object
#$xfile = Get-ChildItem -Path $xPath -Filter *.txt | ? - will filter for *.txt only
#$xfile = Get-ChildItem -Path $xPath -Include *.txt, *.xml | ? - if need to filter two or more file extensions
#=====================
#check for modified files for the last 60 minutes
#$xminutes has value of 60, change the variable to your desired value
$xfile = Get-ChildItem -Path $xPath -Filter *.txt | ? {
$_.LastWriteTime -gt
(Get-Date).AddMinutes(-$xminutes) }
# Set mail FROM.
$from = "admin_alert@pluto.com"
$to = "inform_me@saturn.com"
#Set the SMTP server
$smtp = "xxplanet.com"
#uncomment this code below to see what's going on
# write-host $xfile
#send email if changes has been made
if ($xfile) { $body = "File had
been changed"; $subject = "Alert File Change"; Send-MailMessage
-Body "$body" -to $to -from $from -Subject $subject -smtp $smtp }
else { Write-Host "No Changes"}
====================END of Code Snippet=====================
Hope it helps… Cheers!! Please drop a comment if you find it useful.. :)
===================================
Free Android Apps:
Click on links below to find out more:
Excel Keyboard shortcuts guide
https://play.google.com/store/apps/details?id=chrisjoms.myexcelapplicationguide
https://play.google.com/store/apps/details?id=soulrefresh.beautiful.prayer
Catholic Rosary Guide for Android:
https://play.google.com/store/apps/details?id=com.myrosaryapp
http://quickbytesstuff.blogspot.sg/2014/09/how-to-recite-rosary.html
Divine Mercy Chaplet Guide (A Powerful prayer):
https://play.google.com/store/apps/details?id=com.dmercyapp
Free Android Apps:
Click on links below to find out more:
Excel Keyboard shortcuts guide
https://play.google.com/store/apps/details?id=chrisjoms.myexcelapplicationguide
https://play.google.com/store/apps/details?id=soulrefresh.beautiful.prayer
Catholic Rosary Guide for Android:
https://play.google.com/store/apps/details?id=com.myrosaryapp
http://quickbytesstuff.blogspot.sg/2014/09/how-to-recite-rosary.html
Divine Mercy Chaplet Guide (A Powerful prayer):
https://play.google.com/store/apps/details?id=com.dmercyapp
Hi
ReplyDeleteCan you help please. When I run this I get and error in line 5
$xminutes="60"
$xPath="c:\temp\*.*"
$xfile = Get-ChildItem -Path $xPath -Filter *.txt, *.xml | ? {
$_.LastWriteTime -gt (Get-Date).AddMinutes(-$xminutes) }
Write-Host $xfile
I get this error :-
Get-ChildItem : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Filter'.
Specified method is not supported.
At line:5 char:46
+ $xfile = Get-ChildItem -Path $xPath -Filter *.txt, *.xml | ? {
+ ~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-ChildItem], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.GetChildItemCommand
Kind Regards
Matthew
Hi
ReplyDeleteFantastic tutorial again. the -Filter should say -Include instead. Also could you add more explanation about the line please.
cheers
Matt
Thanks for the heads up, Matt. Yes I have updated the code. :)
Delete