Update samy.ps1

This commit is contained in:
2026-01-12 12:40:40 -05:00
parent 9d95a455a7
commit 7870c1efd3

View File

@@ -1914,16 +1914,14 @@ function Install-DattoRMM {
function Get-TaskHandlerName { function Get-TaskHandlerName {
param([object]$Task) param([object]$Task)
# Preferred explicit properties (if your JSON provides them)
foreach ($p in @('HandlerFn','Handler','Fn')) { foreach ($p in @('HandlerFn','Handler','Fn')) {
if ($Task.PSObject.Properties.Name -contains $p) { if ($Task.PSObject.Properties.Name -contains $p) {
$v = [string]$Task.$p $v = ([string]$Task.$p).Trim().TrimStart('/')
if (-not [string]::IsNullOrWhiteSpace($v)) { return $v } if (-not [string]::IsNullOrWhiteSpace($v)) { return $v }
} }
} }
# Fallback convention: Name="InstallChrome" -> Invoke-InstallChrome $n = ([string]$Task.Name).Trim().TrimStart('/')
$n = [string]$Task.Name
if (-not [string]::IsNullOrWhiteSpace($n)) { return "Invoke-$n" } if (-not [string]::IsNullOrWhiteSpace($n)) { return "Invoke-$n" }
return $null return $null
@@ -2078,45 +2076,52 @@ function Install-DattoRMM {
} }
'Offboard' {
Write-LogHybrid "Headless offboarding requested" Info OffBoard -LogToEvent
# Ne garde que les tâches réellement exécutables
$offboardTasks = $Global:SamyTasks | Where-Object {
$_.Page -eq 'offboard' -and -not [string]::IsNullOrWhiteSpace([string]$_.Name)
}
'Offboard' { if (-not $offboardTasks) {
Write-LogHybrid "Headless offboarding requested" Info OffBoard -LogToEvent Write-LogHybrid "No offboard tasks configured (or none with a Name)." Warning OffBoard -LogToEvent
$offboardTasks = $Global:SamyTasks | Where-Object Page -EQ 'offboard' return
if (-not $offboardTasks) { }
Write-LogHybrid "No offboard tasks configured" Warning OffBoard -LogToEvent
return
}
if (-not $PSCmdlet.ShouldProcess("Full off-boarding flow", "Execute every offboard task")) { if (-not $PSCmdlet.ShouldProcess("Full off-boarding flow", "Execute every offboard task")) {
return return
} }
foreach ($task in $offboardTasks) { foreach ($task in $offboardTasks) {
try { try {
Write-LogHybrid "Running offboard task: $($task.Label)" Info OffBoard -LogToEvent Write-LogHybrid "Running offboard task: $($task.Label)" Info OffBoard -LogToEvent
$fn = Get-TaskHandlerName -Task $task $fn = Get-TaskHandlerName -Task $task
if ([string]::IsNullOrWhiteSpace($fn)) { if ([string]::IsNullOrWhiteSpace($fn)) {
Write-LogHybrid "Offboard task is missing a handler (Id=$($task.Id) Label='$($task.Label)')" Error OffBoard -LogToEvent Write-LogHybrid "Skipping task with missing handler (Id=$($task.Id) Name='$($task.Name)' Label='$($task.Label)')" Error OffBoard -LogToEvent
continue continue
}
$cmd = Get-Command -Name $fn -ErrorAction SilentlyContinue
if (-not $cmd) {
Write-LogHybrid "Skipping task: handler not found '$fn' (task '$($task.Label)')" Error OffBoard -LogToEvent
continue
}
if ($cmd.Parameters.ContainsKey('Context')) {
& $fn -Context $null
} else {
& $fn
}
} }
catch {
$cmd = Get-Command -Name $fn -ErrorAction SilentlyContinue Write-LogHybrid "Offboard task '$($task.Label)' failed: $($_.Exception.Message)" Error OffBoard -LogToEvent
if (-not $cmd) {
Write-LogHybrid "Missing handler $fn (task '$($task.Label)')" Error OffBoard -LogToEvent
continue
}
if ($cmd.Parameters.ContainsKey('Context')) {
& $fn -Context $null
} else {
& $fn
} }
} }
catch {
Write-LogHybrid "Offboard task $($task.Label) failed: $($_.Exception.Message)" Error OffBoard -LogToEvent Write-LogHybrid "Headless offboarding completed" Success OffBoard -LogToEvent
} return
} }