This commit is contained in:
Zack Meier
2026-04-15 15:45:50 -05:00
commit 1d304511b8
613 changed files with 140998 additions and 0 deletions
@@ -0,0 +1,89 @@
<#
.SYNOPSIS
Script will discover all files that are considered "expired".
.DESCRIPTION
Script will discover all files that are considered "expired" based on the parameters in the ./Helpers/ITDExpiredFiles.json files in the ITD-WindowsServer module
.NOTES
Information or caveats about the function e.g. 'This function is not supported in Linux'
.LINK
.EXAMPLE
Get-ITDExpiredFiles
.EXAMPLE
Get-ITDExpiredFiles -Credential $PrvCred
.EXAMPLE
Get-ITDExpiredFiles -ComputerName itdxyz.nd.gov -Credential $PrvCred
#>
function Get-ITDExpiredFiles {
[CmdletBinding()]
param (
[string]
$ComputerName,
[PSCredential]
$Credential
)
Begin {
Write-Verbose -Message "Load json files into memory"
$JsonFiles = Get-ChildItem -Path "$PSScriptRoot\..\Helpers\*.json" | Where-Object Name -NE ^template.json
$MachineInfo = ForEach ($file in $JsonFiles) {
Get-Content -Path $file.FullName | ConvertFrom-Json
}
If ($PSBoundParameters.ContainsKey('ComputerName')) {
Write-Verbose -Message "ComputerName found"
$MachineInfo = $MachineInfo | Where-Object ComputerName -EQ $ComputerName
}
}
Process {
Write-Verbose -Message "Prep discovery function"
$GetExpiredFilesFunc = {
Write-Verbose -Message ($env:COMPUTERNAME + " " + $args[0] + " " + $args[1] + " " + $args[2])
$GetChildItemParams = @{
Path = $args[0];
Filter = $args[1];
Recurse = $args[2];
}
$FilesFound = (Get-ChildItem @GetChildItemParams | Where-Object LastWriteTime -LT ((Get-Date).AddDays(-$args[3])))
Write-Output $FilesFound
}
$GetITDExpiredFilesResult = [System.Collections.ArrayList]@()
ForEach ($Server in $MachineInfo) {
Write-Verbose -Message ("Start " + $Server.ComputerName)
Write-Verbose -Message "Ping test before any Invoke-Command"
If ((Test-NetConnection -ComputerName $Server.ComputerName).PingSucceeded) {
ForEach ($Directory in $Server.Directory) {
Write-Verbose -Message ("Start " + $server.ComputerName + " " + $Directory.Path)
$FilesFoundOnServer = $null
$InvokeCommandParams = $null
$InvokeResult = $null
$InvokeCommandParams = @{
ComputerName = $Server.ComputerName;
Credential = $Credential;
ScriptBlock = $GetExpiredFilesFunc;
ArgumentList = @($Directory.Path, ("*" + $Directory.Extension), $Directory.Recursive, $Directory.DaysToKeep);
}
$FilesFoundOnServer = Invoke-Command @InvokeCommandParams
Write-Output $FilesFoundOnServer
#$null = $GetITDExpiredFilesResult.Add($FilesFoundOnServer)
Write-Verbose -Message ("End " + $server.ComputerName + " " + $Directory.Path)
}
}
Else {
Write-Error -Message ($Server.ComputerName + " ping test failed, generate ticket someday.")
}
}
Write-Verbose -Message ("End " + $server.ComputerName)
}
End {
#Write-Output $GetITDExpiredFilesResult
Write-Verbose -Message "End Get-ITDExpiredFiles"
}
}