# connect with graph for E-mail sending
Join-MgGraph -Scopes Mail.Ship -NoWelcome
$invokeADComputersCleanupSplat = @{
#ExcludeDomains="advert.evotec.xyz"
# security limits (minimal quantity of computer systems that must be returned from every supply)
SafetyADLimit = 30
#SafetyAzureADLimit = 5
#SafetyIntuneLimit = 3
#SafetyJamfLimit = 50
# disable settings
Disable = $true
DisableAndMove = $true
DisableAndMoveOrder="DisableAndMove" # DisableAndMove, MoveAndDisable
#DisableIsEnabled = $true
DisableLimit = 1
DisableLastLogonDateMoreThan = 90
DisablePasswordLastSetMoreThan = 90
#DisableLastSeenAzureMoreThan = 90
DisableRequireWhenCreatedMoreThan = 90
DisablePasswordLastSetOlderThan = Get-Date -Yr 2023 -Month 1 -Day 1
#DisableLastSyncAzureMoreThan = 90
#DisableLastContactJamfMoreThan = 90
#DisableLastSeenIntuneMoreThan = 90
DisableMoveTargetOrganizationalUnit = @{
'advert.evotec.xyz' = 'OU=Disabled,OU=Computer systems,OU=Gadgets,OU=Manufacturing,DC=advert,DC=evotec,DC=xyz'
'advert.evotec.pl' = 'OU=Disabled,OU=Computer systems,OU=Gadgets,OU=Manufacturing,DC=advert,DC=evotec,DC=pl'
}
# transfer settings
Transfer = $false
MoveLimit = 1
MoveLastLogonDateMoreThan = 90
MovePasswordLastSetMoreThan = 90
#MoveLastSeenAzureMoreThan = 180
#MoveLastSyncAzureMoreThan = 180
#MoveLastContactJamfMoreThan = 180
#MoveLastSeenIntuneMoreThan = 180
#MoveListProcessedMoreThan = 90 # disabled laptop has to spend 90 days in record earlier than it may be deleted
MoveIsEnabled = $false # Laptop must be disabled to be moved
MoveTargetOrganizationalUnit = @{
'advert.evotec.xyz' = 'OU=Disabled,OU=Computer systems,OU=Gadgets,OU=Manufacturing,DC=advert,DC=evotec,DC=xyz'
'advert.evotec.pl' = 'OU=Disabled,OU=Computer systems,OU=Gadgets,OU=Manufacturing,DC=advert,DC=evotec,DC=pl'
}
# delete settings
Delete = $false
DeleteLimit = 2
DeleteLastLogonDateMoreThan = 180
DeletePasswordLastSetMoreThan = 180
#DeleteLastSeenAzureMoreThan = 180
#DeleteLastSyncAzureMoreThan = 180
#DeleteLastContactJamfMoreThan = 180
#DeleteLastSeenIntuneMoreThan = 180
#DeleteListProcessedMoreThan = 90 # disabled laptop has to spend 90 days in record earlier than it may be deleted
DeleteIsEnabled = $false # Laptop must be disabled to be deleted
# world exclusions
Exclusions = @(
'*OU=Area Controllers*' # exclude Area Controllers
)
# filter for AD search
Filter="*"
# logs, reviews and datastores
LogPath = "$PSScriptRootLogsCleanupComputers_$((Get-Date).ToString('yyyy-MM-dd_HH_mm_ss')).log"
DataStorePath = "$PSScriptRootCleanupComputers_ListProcessed.xml"
ReportPath = "$PSScriptRootReportsCleanupComputers_$((Get-Date).ToString('yyyy-MM-dd_HH_mm_ss')).html"
# WhatIf settings
ReportOnly = $false
WhatIfDisable = $true
WhatIfMove = $true
WhatIfDelete = $true
ShowHTML = $true
DontWriteToEventLog = $true
}
$Output = Invoke-ADComputersCleanup @invokeADComputersCleanupSplat
# Now lets ship e-mail utilizing Graph
[Array] $DisabledObjects = $Output.CurrentRun | The place-Object { $_.Motion -eq 'Disable' }
[Array] $DeletedObjects = $Output.CurrentRun | The place-Object { $_.Motion -eq 'Delete' }
$EmailBody = EmailBody -EmailBody {
EmailText -Textual content "Hi there,"
EmailText -LineBreak
EmailText -Textual content "That is an automatic e-mail from Automations run on ", $Env:COMPUTERNAME, " on ", (Get-Date -Format 'yyyy-MM-dd HH:mm:ss'), " by ", $Env:UserName -Shade None, Inexperienced, None, Inexperienced, None, Inexperienced -FontWeight regular, daring, regular, daring, regular, daring
EmailText -LineBreak
EmailText -Textual content "Following is a abstract for the pc object cleanup:" -FontWeight daring
EmailList {
EmailListItem -Textual content "Objects actioned: ", $Output.CurrentRun.Rely -Shade None, Inexperienced -FontWeight regular, daring
EmailListItem -Textual content "Objects deleted: ", $DeletedObjects.Rely -Shade None, Salmon -FontWeight regular, daring
EmailListItem -Textual content "Objects disabled: ", $DisabledObjects.Rely -Shade None, Orange -FontWeight regular, daring
}
EmailText -Textual content "Following objects had been actioned:" -LineBreak -FontWeight daring -Shade Salmon
EmailTable -DataTable $Output.CurrentRun -HideFooter {
New-HTMLTableCondition -Title 'Motion' -ComparisonType string -Worth 'Delete' -BackGroundColor PinkLace -Inline
New-HTMLTableCondition -Title 'Motion' -ComparisonType string -Worth 'Disable' -BackGroundColor EnergyYellow -Inline
New-HTMLTableCondition -Title 'ActionStatus' -ComparisonType string -Worth 'True' -BackGroundColor LightGreen -Inline
New-HTMLTableCondition -Title 'ActionStatus' -ComparisonType string -Worth 'False' -BackGroundColor Salmon -Inline
New-HTMLTableCondition -Title 'ActionStatus' -ComparisonType string -Worth 'Whatif' -BackGroundColor LightBlue -Inline
}
EmailText -LineBreak
EmailText -Textual content "Regards,"
EmailText -Textual content "Automations Group" -FontWeight daring
}
# ship e-mail utilizing Mailozaurr
Ship-EmailMessage -To 'przemyslaw.klys@check.pl' -From 'przemyslaw.klys@check.pl' -MgGraphRequest -Topic "Automated Laptop Cleanup Report" -Physique $EmailBody -Precedence Low -Verbose -WhatIf

