Files
Backup/_NDGOV_WindowsTeam/ITD.ITD-WindowsServer.FileManagement/Public/Remove-ITDExpiredFiles.ps1
T
Zack Meier 1d304511b8 update
2026-04-15 15:45:50 -05:00

99 lines
4.1 KiB
PowerShell

function Remove-ITDExpiredFiles {
[CmdletBinding()]
param (
[string]
$ComputerName,
[switch]
$WhatIf,
[PSCredential]
$Credential
)
Begin {
Write-Verbose -Message "Start Remove-ITDExpiredFiles"
}
Process {
$FilesRemovedSuccess = @()
$FilesRemovedFailure = @()
$GetITDExpiredFilesAutoParams += @{}
If ($PSBoundParameters.ContainsKey('ComputerName')) {
Write-Verbose -Message "ComputerName parameter found"
$GetITDExpiredFilesParams += @{
ComputerName = $ComputerName;
}
}
If ($PSBoundParameters.ContainsKey('Credential')) {
Write-Verbose -Message "Credential parameter found"
$GetITDExpiredFilesParams += @{
Credential = $Credential;
}
}
$FilesToRemove = Get-ITDExpiredFiles @GetITDExpiredFilesParams
Write-Verbose -Message ("Found " + $FilesToRemove.count + " expired files to remove")
ForEach ($File in $FilesToRemove) {
Write-Verbose -Message ("Start~" + $File.PSComputerName + "~" + $File.FullName )
$InvokeCommandParams = @{
ComputerName = $File.PSComputerName;
Credential = $Credential;
ErrorAction = 'Stop';
ArgumentList = @($File.FullName);
ScriptBlock = { Get-Item -Path $args[0] | Remove-Item }
}
switch ($WhatIf) {
$true {
try {
Write-Verbose -Message ("Process~" + $File.PSComputerName + "~" + $File.FullName + " removed")
Write-Host -Message ($Server.ComputerName + " -- " + 'What if: Performing the operation "Remove File" on target ' + $File.FullName)
# log success
$FilesRemovedSuccess += [PSCustomObject]@{
ComputerName = $File.PSComputerName;
Name = $File.Fullname;
Timestamp = (Get-Date).tostring("yyyy/MM/dd HH:mm:ss")
}
Write-Output $File
}
catch {
Write-Verbose -Message ("Process~" + $File.PSComputerName + "~" + $File.FullName + " failure")
# log failure
$FilesRemovedFailure += [PSCustomObject]@{
ComputerName = $File.PSComputerName;
Name = $File.Fullname;
Timestamp = (Get-Date).tostring("yyyy/MM/dd HH:mm:ss")
}
}
}
Default {
try {
Invoke-Command @InvokeCommandParams
Write-Verbose -Message ("Process~" + $File.PSComputerName + "~" + $File.FullName + " removed")
# log success
$FilesRemovedSuccess += [PSCustomObject]@{
ComputerName = $File.PSComputerName;
Name = $File.Fullname;
Timestamp = (Get-Date).tostring("yyyy/MM/dd HH:mm:ss")
}
Write-Output $File
}
catch {
Write-Verbose -Message ("Start~" + $File.PSComputerName + "~" + $File.FullName + " failure")
# log failure
$FilesRemovedFailure += [PSCustomObject]@{
ComputerName = $File.PSComputerName;
Name = $File.Fullname;
Timestamp = (Get-Date).tostring("yyyy/MM/dd HH:mm:ss")
}
}
}
}
Write-Verbose -Message ("End~" + $File.PSComputerName + "~" + $File.FullName )
}
}
End {
Write-Verbose -Message "End Remove-ITDExpiredFilesAuto"
}
}