tests/Test-Assessment.21953.ps1

<#
.SYNOPSIS
    Checks if Local Admin Password Solution (LAPS) is deployed in the tenant.
#>


function Test-Assessment-21953{
    [ZtTest(
        Category = 'Access control',
        ImplementationCost = 'Medium',
        Pillar = 'Identity',
        RiskLevel = 'High',
        SfiPillar = 'Protect identities and secrets',
        TenantType = ('Workforce','External'),
        TestId = 21953,
        Title = 'Local Admin Password Solution is deployed',
        UserImpact = 'Low'
    )]
    [CmdletBinding()]
    param()

    Write-PSFMessage '🟦 Start' -Tag Test -Level VeryVerbose

    $activity = 'Checking Local Admin Password Solution is deployed'
    Write-ZtProgress -Activity $activity -Status 'Getting LAPS settings'

    $lapsSettings = Invoke-ZtGraphRequest -RelativeUri 'policies/deviceRegistrationPolicy' -ApiVersion beta

    $passed = $true
    $testResultMarkdown = ""

    if ($null -eq $lapsSettings) {
        $passed = $false
        $testResultMarkdown = 'Device Registration Policy settings were not found in the tenant configuration.'
    }
    else {
        Write-ZtProgress -Activity $activity -Status 'Checking LAPS configuration'

        $portalLink = 'https://entra.microsoft.com/#view/Microsoft_AAD_Devices/DevicesMenuBlade/~/DeviceSettings/menuId/Overview'

        $lapsEnabled = ${lapsSettings}?.localAdminPassword?.isEnabled -eq $true
        $lapsStatus = if ($lapsEnabled) { 'Enabled' } else { 'Disabled' }

        $mdInfo = "`n## Local Admin Password Solution (LAPS) settings`n`n"
        $mdInfo += "| Setting | Status |`n"
        $mdInfo += "| :---- | :---- |`n"
        $mdInfo += "|[Enable Microsoft Entra Local Administrator Password Solution (LAPS)]($portalLink) | $lapsStatus`n"

        if ($lapsEnabled) {
            $passed = $true
            $testResultMarkdown = "Local Admin Password Solution is deployed.$mdInfo"
        }
        else {
            $passed = $false
            $testResultMarkdown = "Local Admin Password Solution is not deployed.$mdInfo"
        }
    }

    $params = @{
        TestId = '21953'
        Status = $passed
        Result = $testResultMarkdown
    }
    Add-ZtTestResultDetail @params
}