Public/Set-AutoLogin.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
function Set-AutoLogin {
  [CmdletBinding(DefaultParameterSetName = 'Enable')]
  param(
    [Parameter(ParameterSetName = 'Enable')]
    [string]$User = $env:USERNAME,
    [Parameter(Mandatory,ParameterSetName = 'Enable',
    HelpMessage='Enter Password as a String')]
    [string]$Password,
    [Parameter(ParameterSetName = 'Enable')]
    [string]$Domain = $env:USERDOMAIN,
    [Parameter(ParameterSetName = 'Disable')]
    [switch]$Disable
  )
  begin{
    $RegPath = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon'
    if (-not (Test-Path -Path $RegPath)) {
      throw ('{0} - Path does not exsist' -f $RegPath)
    }
  }
  process{
    switch ($PSCmdlet.ParameterSetName){
      'Enable' {
          # autologon user domain password
          $url = 'https://live.sysinternals.com/Autologon.exe'
          $DLPath = [System.IO.Path]::Combine($env:TEMP,($url | Split-Path -Leaf))
          [System.Net.WebClient]::new().DownloadFile($url, $DLPath)

          Start-Process -FilePath $DLPath -ArgumentList ($User, $Domain, $Password) -NoNewWindow -Wait
        <#
        Set-ItemProperty -Path $RegPath -Name 'AutoAdminLogon' -Value 1 -Force -Verbose:$VerbosePreference
        Set-ItemProperty -Path $RegPath -Name 'DefaultDomainName' -Value $Domain -Force -Verbose:$VerbosePreference
        Set-ItemProperty -Path $RegPath -Name 'DefaultUserName' -Value $User -Force -Verbose:$VerbosePreference
        Set-ItemProperty -Path $RegPath -Name 'DefaultPassword' -Value $Password -Force -Verbose:$VerbosePreference
        #>

      }
      'Disable' {
        Set-ItemProperty -Path $RegPath -Name 'AutoAdminLogon' -Value 0 -Force -Verbose:$VerbosePreference
        Set-ItemProperty -Path $RegPath -Name 'DefaultPassword' -Value '' -Force -Verbose:$VerbosePreference
      }
    }
  }
}