<#
.SYNOPSIS
    PIN Automation

.DESCRIPTION
    Automates PIN unlock.

.PARAMETER 

#>
Param( 
	[parameter(Mandatory = $true)][string]$action,
    [parameter(Mandatory = $false)][string]$UserName,
    [parameter(Mandatory = $false)][string]$PIN,
    [parameter(Mandatory = $false)][string]$LogPath,
    [parameter(Mandatory = $false)][switch]$UseSecureDestop
)

[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

try
{
    #*****************************************************************
    #
    #                Definitions and imports
    #
    #*****************************************************************

    #set to true if you need to hang the script at the end to check console output
    $Global:debugFlag = $false  

    $Global:AxeUniversalPath = Convert-Path((Get-Item env:\AssessmentAxeUniversalPath -ErrorAction Stop).value)
    
    # Need to know where our script is so we can use full path to all our dependent files.
    $InvocationPath = Split-Path -Path $MyInvocation.MyCommand.Path -Parent

    try
    {
        # Import the modules and functions
        Import-Module "$AxeUniversalPath\UniversalAssessment.psm1" -ErrorAction Stop
    }
    catch
    {
        throw "Failed to import $AxeUniversalPath\UniversalAssessment.psm1"
    }

    Initialize-UniversalFramework -InvocationPath (Split-Path -Path $MyInvocation.MyCommand.Path -Parent) -AxeUniversalPath $AxeUniversalPath

    #*****************************************************************
    #
    #                Actual workload!
    #
    #*****************************************************************
    $realarch = Get-RealProcessorArchitecture
    "realarch $realarch" | Log-Info
    
    $taskname="PIN Unlock"
    $taskpath="\Microsoft\Windows\AxeOnOffHelper"
    
	if ($action -eq "Deploy")
	{
		[string[]]$CustomPackages = @("Microsoft-Assessments-Core-LogonUXAutomation.cab")
        Install-UT_TaefPackages -arch $realarch -CabsPath $AxeCabsPath -BinariesPath $BinariesPath -CustomPackages $CustomPackages
        
        $credentialsJsonFile = "$InvocationPath\credentials.json"
        Update-UserNameAndPINFromJson -credentialsJsonFile $credentialsJsonFile -UserName ([ref]$UserName) -PIN ([ref]$PIN)
        "UserName: $UserName, PIN: $PIN" | Log-Info
        
        # delete existing task if it exists
        Get-ScheduledTask -TaskName $taskname -ErrorAction SilentlyContinue | Unregister-ScheduledTask -Confirm:$false
        # get target script based on current script root
        # create list of triggers, and add logon trigger
        $triggers = @()
        $triggers += New-ScheduledTaskTrigger -AtStartup
    
        # create TaskEventTrigger, use your own value in Subscription
        $CIMTriggerClass = Get-CimClass -ClassName MSFT_TaskEventTrigger -Namespace Root/Microsoft/Windows/TaskScheduler:MSFT_TaskEventTrigger
        $trigger = New-CimInstance -CimClass $CIMTriggerClass -ClientOnly
        $trigger.Subscription = 
@"
<QueryList><Query Id="0" Path="System"><Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Power-Troubleshooter'] and (Level=4 or Level=0) and (EventID=1)]]</Select></Query></QueryList>
"@
        $trigger.Enabled = $True 
        $triggers += $trigger
    
        # create task
        $User='Nt Authority\System'
        $TaskArgument = "c:\data\test\bin\Microsoft-Assessments-Core-LogonUXAutomation.dll /name:LogonUXAutomation::Unlock /runas:System /p:UserName=$UserName /p:Password=$PIN /p:SleepTimeoutSec=0"
        if($UseSecureDestop)
        {
            $TaskArgument += " /p:UseSecureDestop=true"
        }
        $TaskArgument += " /outputFolder:$LogPath /p:logFolder=$LogPath /logfile:teLog.xml /logOutput:Lowest /enableWttlogging"
        "TaskArgument: $TaskArgument" | Log-Info
        $TaskAction=New-ScheduledTaskAction -Execute "c:\data\test\bin\te.exe" -Argument $TaskArgument
        Register-ScheduledTask -TaskName $taskname -TaskPath $taskpath -Trigger $triggers -User $User -Action $TaskAction -RunLevel Highest -Force
	}
	if ($action -eq "Unregister")
	{
        Get-ScheduledTask -TaskName $taskname -ErrorAction SilentlyContinue | Unregister-ScheduledTask -Confirm:$false
	} 
				
}
catch
{
    Handle-UniversalFrameworkException -Exception $_
}
finally 
{
    Cleanup-UniversalFramework
}
# SIG # Begin signature block
# MIIPPAYJKoZIhvcNAQcCoIIPLTCCDykCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCD7iv8jg7wPgibR
# wcuVUB7xfGtvD5xucV+U7wICfRT3AaCCDDcwggWcMIIEhKADAgECAhMzAAAFoZ8Q
# C11IrMQLAAEAAAWhMA0GCSqGSIb3DQEBCwUAMHkxCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBUZXN0aW5nIFBD
# QSAyMDEwMB4XDTIzMDIxNjE4MzQ1MloXDTI0MDUxNjE4MzQ1MlowgZAxCzAJBgNV
# BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w
# HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xOjA4BgNVBAMTMU1pY3Jvc29m
# dCBXaW5kb3dzIEtpdHMgUHVibGlzaGVyIFRlc3QgQ2VydGlmaWNhdGUwggEiMA0G
# CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDXH9A60xsg51izm2xTUgoWmaAzMheA
# yMSRWd2TBxOyX4JAR7otofZ43lxV/HftKC8a3x89LcsAln3V8pOgnyLPsBSPASdA
# sGya+vPw938TnlW1O9665HkZCdTT9Dhl7LIv8J3ZecVPlEUh+rS2tUAC+hGm4THs
# TAlSkn8UswQ16vnhOYj/N2+T8mwg7yAgvpn2LEDdrHn1THJGa5TgrUYqjdb4jxOj
# Ux5YgW5wK0wBqZSy+AoejWkEOxq6ZyYly5V7G8bIvKfKyh78VXRyKGsOfev6be5q
# wSwEUI1wOKz7eGVhEnRKQan/tUs+IGSLEuMLMKG4wSnE1ks5OajMG11RAgMBAAGj
# ggIDMIIB/zA9BgkrBgEEAYI3FQcEMDAuBiYrBgEEAYI3FQiDz4lNrfIChaGfDIL6
# yn2B4ft0gU+BwY41hPKSawIBZAIBEjApBgkrBgEEAYI3FQoEHDAaMAwGCisGAQQB
# gjcKAxQwCgYIKwYBBQUHAwMwDgYDVR0PAQH/BAQDAgeAMB8GA1UdJQQYMBYGCCsG
# AQUFBwMDBgorBgEEAYI3CgMUMB0GA1UdDgQWBBQkEL4a4PBH26mDgARv5PGrWZXn
# FDAfBgNVHSMEGDAWgBS/ZaKrb3WjTkWWVwXPOYf0wBUcHDBcBgNVHR8EVTBTMFGg
# T6BNhktodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3Nv
# ZnQlMjBUZXN0aW5nJTIwUENBJTIwMjAxMCgxKS5jcmwwaQYIKwYBBQUHAQEEXTBb
# MFkGCCsGAQUFBzAChk1odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2Nl
# cnRzL01pY3Jvc29mdCUyMFRlc3RpbmclMjBQQ0ElMjAyMDEwKDEpLmNydDBLBgkr
# BgEEAYI3FAIEPh48AE0AUwBJAFQAVABlAHMAdABDAG8AZABlAFMAaQBnAG4AaQBu
# AGcAUwBoAGEAMgBLAGkAdABzAC0AQwBTMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcN
# AQELBQADggEBAGTPmD8F078lk5gFJTKQDRqp9F6jxGMz21Nail+Ftcvu/GcHO4CP
# YBLzVX6Qxyh6xVxP8UNRnoU6nJIU7kjYHIGaUIA4cj5/71Uh/tOMc4bdydjiYmU1
# xzRtbem+YxaQ4wLG3PCbZKlnXcuO1g0PM5i5S+4YvXfkv6Y1FeXL3ANKWavE8DA9
# zsq+/efrrvjGq4Un9arloz30idirnHzNYfFYXQBP/sye3fh3EjEEcs5Pk0GfS1IG
# AOcF2N/h+5GG63vCL7CtShQJbvt5hIMm+3J8X3wxDJUk2cdMbDmFgMCKZwTshE2W
# TDI3AqTV3JhFNfgeP3cKoXAOSPsSKbCsu7IwggaTMIIEe6ADAgECAhMzAAAALTV6
# RojJB3HYAAAAAAAtMA0GCSqGSIb3DQEBCwUAMIGQMQswCQYDVQQGEwJVUzETMBEG
# A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
# cm9zb2Z0IENvcnBvcmF0aW9uMTowOAYDVQQDEzFNaWNyb3NvZnQgVGVzdGluZyBS
# b290IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTIwMTIxMDIwNDMyMFoX
# DTM1MDYxNzIxMDQxMVoweTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0
# b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
# dGlvbjEjMCEGA1UEAxMaTWljcm9zb2Z0IFRlc3RpbmcgUENBIDIwMTAwggEiMA0G
# CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/PGCBq77s/9cXY/KmQtETYpywF866
# Rhp7Ii5Vc5pUucbU0cqY/ndHDY6d8F7M+FTv8s8q1GLxqTQKBNfFBYbyEPVN05YI
# ZoXbAn0Y3OJ6I6eaKV2ueRjPDGPwGv+BqalDP6kLuVHxs0g6/EQuXxHFVjr/yg7N
# iAjB/cfV9T7v6k4bcosjvUU3nh9wwafJuCBz7fNsPYshBc93Ev6h3AfpDVt4CWwy
# VRBH0DfIx/f6c/5GNORWFqg3ZFPWNfvDgLaOtoaRoRDWwUr243rUEQqy3i6eEJfg
# ga4SXYgBXcykxChSnGDwCuaIr0vpV4rsow83Hin2XSHT19pdDslO241tAgMBAAGj
# ggH6MIIB9jAOBgNVHQ8BAf8EBAMCAYYwEgYJKwYBBAGCNxUBBAUCAwEAATAjBgkr
# BgEEAYI3FQIEFgQU6p9fM7bQX56t6y2mwQK7QDjL57UwHQYDVR0OBBYEFL9loqtv
# daNORZZXBc85h/TAFRwcMFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIB
# FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9y
# eS5odG0wGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwDwYDVR0TAQH/BAUwAwEB
# /zAfBgNVHSMEGDAWgBSjAQR+MIgz67kxnMrrhXZn/GW00TBZBgNVHR8EUjBQME6g
# TKBKhkhodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9N
# aWNUZXNSb29DZXJBdXRfMjAxMC0wNi0xNy5jcmwwgY0GCCsGAQUFBwEBBIGAMH4w
# TQYIKwYBBQUHMAKGQWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMv
# TWljVGVzUm9vQ2VyQXV0XzIwMTAtMDYtMTcuY3J0MC0GCCsGAQUFBzABhiFodHRw
# Oi8vb25lb2NzcC5taWNyb3NvZnQuY29tL29jc3AwDQYJKoZIhvcNAQELBQADggIB
# ACe00IWynswPpCpTc9Vt2tcxAMj2/2PI9gERtRiS2ty0+a8m6PxKeb3BZ7CIA3ll
# zzU1BViO4oMGlvW6fhJZUJvg8NU9nQnzu0bNh7104nfQRgZ6IhppK2QsuYs5gAzq
# giciojBXIiTZIT+raUa3w6/Bxl682Y+RViOTqfImLkR29LpyI9GZb1tFZFPilZTx
# tkhAv3fwsTiUc5ACLGsBCJZ6zlLOnZTzkTSct1oOvnD8jbwn9nX7jNbU1qjWmtUI
# 6quiyeg1R9V/WS+zB9bcVjaXU+IBinywbI7nsZrO1d0GgQ4FwMt519w+tr340t0Q
# Xfo2QTSD711uiQVjsrGFQnxakyIKY3jKP0soUu9Bty0Ywklj0TAcWJ+bamBqJpp8
# oXUbLP42u4nMQSCnKwyj9/0BUFD+oJ09BAYRandAMhp5/i2z1BPH5GYMoIEMxMUu
# AWaaFu1RjQlaMuQqfuyjP8shwNSV7+nlOIUPhWF9mcBy9hAdd+6yWfKn7K6FbMBK
# cBA2c4g7p9zUkUjCQORwz6T9Oyl8BqPMeihIDBeSs5auNENXrAjRjMxUesTJDSFn
# k2chdsveWtOQ4+N/c0G7WdpI0RrJJ25K0NsVWNXdNegQ0SdmK6AkphLCaHOhgczW
# eCKk3ms12omIrm6SnoTwsPOLeXn/tdy0lBjf5mAcMmiyMYICWzCCAlcCAQEwgZAw
# eTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl
# ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEjMCEGA1UEAxMa
# TWljcm9zb2Z0IFRlc3RpbmcgUENBIDIwMTACEzMAAAWhnxALXUisxAsAAQAABaEw
# DQYJYIZIAWUDBAIBBQCggZwwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYK
# KwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIIpCS8Lb
# x1pTHPzq9bWCCsNmbwg9Zm2xoUyASvLydDqMMDAGCisGAQQBgjcCAQwxIjAgoB6A
# HABTAFMAQwBcAFcAaQBuAFIAVABNAHAAYgBsAGQwDQYJKoZIhvcNAQEBBQAEggEA
# XGzt36v36rZvHuwR0lc2+AgMH8CTqWnBtwZKYhF6ZrS/EcMpLlUmdZxriR3SlOsX
# z1w5arj9hWRn2HPb2nIuKYVa6n+8/ortsdAC+IZxsNy/9DCPhObPEasfQ+P5KOh3
# MMQNjka/NPzlQBM82cHLTabuqFY9Wj1NVK0kxq5IE1mzROJeKn+fTHWcGTFRcw5g
# WRE6FGmXcNVoSRaQ9sQKnZD1KkpzcakMHzLZk3R1XCDSaAefluAlrjlNQGFcsgNj
# /lNZ0/GZ1SMlGDLW43b7EVMXB6VGgM4ikFntnr0tal4AmNKQKko85GJhyBLl9BzK
# vJntnb7wH0uPJBAkuY5gDQ==
# SIG # End signature block
