[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$ErrorActionPreference = "SilentlyContinue"
Function Add-Node($Nodes, $Path)
{
$Path.Split("/") | %{
Write-Verbose "Searching For: $_"
$SearchResult = $Nodes.Find($_, $False)
If ($SearchResult.Count -eq 1)
{
Write-Verbose "Selecting: $($SearchResult.Name)"
# Must select first element. Return from Find is TreeNode[]
$Nodes = $SearchResult[0].Nodes
}
Else
{
Write-Verbose "Adding: $_"
$Node = New-Object Windows.Forms.TreeNode($_)
# Name must be populated for Find work
$Node.Name = $_
$Nodes.Add($Node)
}
}
}
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "C Drive Automation"
$objForm.Size = New-Object System.Drawing.Size(600,1000)
$objForm.StartPosition = "CenterScreen"
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
{$x=$objTextBox.Text;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
{$objForm.Close()}})
$dGViewDrive = New-Object System.Windows.Forms.DataGridView -Property @{
Location = New-Object System.Drawing.Size(10,80)
Size=New-Object System.Drawing.Size(500,80)
ColumnHeadersVisible = $true
}
$objForm.Controls.Add($dGViewDrive)
$dataGridView = New-Object System.Windows.Forms.DataGridView -Property @{
Location = New-Object System.Drawing.Size(10,220)
Size=New-Object System.Drawing.Size(500,400)
ColumnHeadersVisible = $true
}
$Label = New-Object System.Windows.Forms.Label
$Label.Text = "testing only -- files shown here are more than 1 month old for C:\temp Dir."
$Label.Location=New-Object System.Drawing.Size(10,185)
$Label.AutoSize = $True
$objForm.Controls.Add($Label)
$TreeView = New-Object Windows.Forms.TreeView
$TreeView.PathSeparator = "/"
$TreeView.CheckBoxes = $true
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 524
$System_Drawing_Size.Height = 563
$TreeView.Size = $System_Drawing_Size
$TreeView.Location=New-Object System.Drawing.Size(10,230)
$listToDelete = New-Object System.collections.ArrayList
$TV_AfterCheck =
{
if($_.Node.Checked)
{
$n=$_.Node
$file=$n.Text
while($n.Text -ne "")
{
$n=$n.Parent
$file= $n.Text +'\' +$file
}
$listToDelete.Add($file)
}
else
{
$n=$_.Node
$file=$n.Text
while($n.Text -ne "")
{
$n=$n.Parent
$file= $n.Text +'\' +$file
}
$listToDelete.Remove($file)
}
}
$TreeView.Add_AfterCheck($TV_AfterCheck)
$objForm.Controls.Add($TreeView)
$Column1 = New-Object System.Windows.Forms.DataGridViewCheckBoxColumn
$Column1.width = 10
$Column1.name = "Select"
$dataGridView.Columns.Add($Column1)
$dataGridView.sel
$objForm.Controls.Add($dataGridView)
$list = New-Object System.collections.ArrayList
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(200,40)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "FETCH"
$OKButton.Add_Click(
{
$x=$objTextBox.Text;
$drive=get-wmiobject Win32_LogicalDisk -ComputerName -Filter "DriveType=3" | select Name,FreeSpace,BlockSize,Size | % {$_.BlockSize=(($_.FreeSpace)/($_.Size))*100;$_.FreeSpace=($_.FreeSpace/1GB);$_.Size=($_.Size/1GB);$_}
$listdrive = New-Object System.collections.ArrayList
$listdrive.AddRange($drive)
$Eliminate = @("svc*", "sql*", "shr*","sup")
$includelist=@("*adm","*.1")
$includefile=@(".tmp",".corrupt")
$3MonthAgo = [DateTime]::Now.AddMonths(-3)
if(Test-Path \\$x'\c$\users')
{
$gps = get-childitem \\$x\c$\users -recurse -include $includelist -exclude $Eliminate | where { $_.PSIsContainer } | select fullname, lastaccesstime, lastwritetime | where { ! $_.PSIsContainer -and $3MonthAgo -ge
$_.LastAccessTime } | select fullname, lastaccesstime, lastwritetime
$list.AddRange($gps)
}
if(Test-Path \\$x'\c$\profile')
{
$gps = get-childitem \\$x\c$\profile -recurse -include $includelist -exclude $Eliminate | where { $_.PSIsContainer } | select fullname, lastaccesstime, lastwritetime | where { ! $_.PSIsContainer
-and $3MonthAgo -ge $_.LastAccessTime } | select fullname, lastaccesstime, lastwritetime
$list.AddRange($gps)
}
if(Test-Path \\$x'\c$\Documents and Settings' )
{
$gps = get-childitem \\$x'\c$\Documents and Settings' -Force -recurse -include $includelist -exclude $Eliminate | where { $_.PSIsContainer } | select fullname, lastaccesstime, lastwritetime |
where { ! $_.PSIsContainer -and $3MonthAgo -ge $_.LastAccessTime } | select fullname, lastaccesstime, lastwritetime
$list.AddRange($gps)
}
$1MonthAgo = [DateTime]::Now.AddMonths(-1)
$gps = Get-ChildItem
\\$x\c$\windows\temp -Recurse | where { $1MonthAgo -ge $_.lastwritetime } | select fullname, lastaccesstime, lastwritetime
$list.AddRange($gps)
$gps = Get-ChildItem \\$x\c$\temp -Recurse | where { $1MonthAgo -ge $_.lastwritetime } | select fullname, lastaccesstime, lastwritetime
$list.AddRange($gps)
$gps = Get-ChildItem \\$x\'c$\$Recycle.Bin' -Force | select fullname, lastaccesstime, lastwritetime
$list.AddRange($gps)
[System.Windows.Forms.MessageBox]::Show('total' + $list.Count)
$list | ForEach-Object {
$b = $_.fullname -replace '\\','/'
Add-Node $TreeView.Nodes $b
}
})
$objForm.Controls.Add($OKButton)
$OKDelete = New-Object System.Windows.Forms.Button
$OKDelete.Location = New-Object System.Drawing.Size(10,800)
$OKDelete.Size = New-Object System.Drawing.Size(75,23)
$OKDelete.Text = "Clean Up"
$OKDelete.Add_Click(
{
Foreach ($file in $listToDelete)
{
$nametocompare="\" + $file
$list | ForEach-Object {
$c = $_.fullname
$finalDeletefiles
if($c.StartsWith($nametocompare))
{
$finalDeletefiles = $finalDeletefiles + $c + "`r`n"
}
}
# Remove-Item $row.Cells[0].Value
}
$OUTPUT= [System.Windows.Forms.MessageBox]::Show($finalDeletefiles , "Delete files?" , 4)
if ($OUTPUT -eq "YES" )
{
$option = [System.StringSplitOptions]::RemoveEmptyEntries
$finaldelete=$finalDeletefiles.Split("`r`n",$option)
[System.Windows.Forms.MessageBox]::Show($finaldelete.Count)
Foreach ($filetoremove in $finaldelete)
{
$Answer = Remove-Item $filetoremove -Force -Recurse
If ( $Answer=$True)
{
Write-Host "Files Deleted Successfully"
}
Else
{
Write-Host "Issue"
}
}
}
})
$objForm.Controls.Add($OKDelete)
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,20)
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Text = "Please enter server name:"
$objForm.Controls.Add($objLabel)
$objTextBox = New-Object System.Windows.Forms.TextBox
$objTextBox.Location = New-Object System.Drawing.Size(10,40)
$objTextBox.Size = New-Object System.Drawing.Size(180,20)
$objTextBox.Text="any"
$objForm.Controls.Add($objTextBox)
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()
$x