Private/Win/Set-UnattendedWindowsAutoLogon.ps1

function Set-UnattendedWindowsAutoLogon
{
    param (
        [Parameter(Mandatory = $true)]
        [string]$DomainName,
        
        [Parameter(Mandatory = $true)]
        [string]$Username,
        
        [Parameter(Mandatory = $true)]
        [string]$Password
    )
        
    $shellNode = $script:un |
    Select-Xml -XPath '//un:settings[@pass = "specialize"]/un:component[@name = "Microsoft-Windows-Shell-Setup"]' -Namespace $ns |
    Select-Object -ExpandProperty Node
    
    $autoLogonNode = $script:un.CreateElement('AutoLogon')
    
    $passwordNode = $script:un.CreateElement('Password')
    $passwordValueNode = $script:un.CreateElement('Value')
    $passwordValueNode.InnerText = $Password
    
    $domainNode = $script:un.CreateElement('Domain')
    $domainNode.InnerText = $DomainName
    
    $enabledNode = $script:un.CreateElement('Enabled')
    $enabledNode.InnerText = 'true'
    
    $logonCount = $script:un.CreateElement('LogonCount')
    $logonCount.InnerText = '9999'
    
    $userNameNode = $script:un.CreateElement('Username')
    $userNameNode.InnerText = $Username
    
    [Void]$autoLogonNode.AppendChild($passwordNode)
    [Void]$passwordNode.AppendChild($passwordValueNode)
    [Void]$autoLogonNode.AppendChild($domainNode)
    [Void]$autoLogonNode.AppendChild($enabledNode)
    [Void]$autoLogonNode.AppendChild($logonCount)
    [Void]$autoLogonNode.AppendChild($userNameNode)
    
    [Void]$shellNode.AppendChild($autoLogonNode)
}