header
header Register : : Login header
header
divider
menuleft
menuright
submenu
left

[August 25th, 2008] Check the home page regarding PowerShell related news from a brand new sponsor: Idera

Newbe get nuts with group-object
Last Post 13 Aug 2008 07:50 AM by carlosdivega. 3 Replies.
Printer Friendly
Sort:
PrevPrev NextNext
You are not authorized to post a reply.
Author Messages
carlosdivegaUser is Offline
New Member
New Member
Posts:2

--
12 Aug 2008 03:54 PM  

Hi all,

i'm new to PS. I have to write a script which clean up log files. All files from the same date shoud be ziped in one file. Files of the actual date shoud not be ziped. My filter works, but i don't know how to use it for genearation of zip files.

My code snippet:

Function GetOldFiles
{

$TargetFolder = "C:\MyTestData"

if (Test-Path $TargetFolder)
{

$Now = Get-Date -f 'yyyy-MM-dd'

$MyArray =  Get-ChildItem $TargetFolder |  
    Where-Object {!$_.psIsContainer -and $_.name -like "*.log" -and $_.name -ne "Boot.log" -and $_.LastWriteTime  -lt $Now} |
    Group-Object {'{0:yyyy"-"MM"-"dd}' -f $_.LastWriteTime} | Sort-Object Name

#Display the Array to check the filter
$MyArray

}
Else
{Write-Host "The Folder $TargetFolder Does Not Exist!"}
}

GetOldFiles

---------------------

Any clues to my problem are welcome. Many thanks for your help.

;) Carlos Di Vega

 

halr9000User is Offline
Basic Member
Basic Member
Posts:316

--
12 Aug 2008 04:20 PM  
I recommend checking out PowerShell Community Extensions (PSCX): http://www.codeplex.com/PowerShellCX. There is a Write-Zip cmdlet included with it, among a ton of other things.
ShayUser is Offline
Basic Member
Basic Member
Posts:228

--
12 Aug 2008 05:01 PM  

As Hal suggested, I'm cretaing the zip files using write-zip which is a part of the PowerShell Community Extensions (PSCX);


$old = (get-date).addDays(-1)
$TargetFolder="C:\MyTestData"

if ( -not (Test-Path $TargetFolder)){
   throw "directory doesn't exist"
   break
}

$files = Get-ChildItem $TargetFolder\* -filter *.log -exclude Boot.log | where {$_.lastWriteTime -lt $old} | group {$_.lastWriteTime.toString('yyyy-MM-dd')}

foreach($g in $files){
 $archiveName = "{0}\{1}.zip" -f $TargetFolder,$g.name
 write-zip -path $g.group -level 9 -OutputPath $archiveName 
}

You can add the -removeoriginal parameter to write-zip if you want to delete the original files.

 

carlosdivegaUser is Offline
New Member
New Member
Posts:2

--
13 Aug 2008 07:50 AM  

Hi Hal, hi Shay!

Many thanks for your help. You gave me exact the needed answer.

;) Carlos Di Vega

 

You are not authorized to post a reply.

Active Forums 4.1
right
   
footer Sponsored by Quest Software • SAPIEN Technologies • ShellTools, LLC • Microsoft Windows Server 2008 footer
footer