Techibee.com

Powershell script to enable auto admin login on windows 7 computers

I came across a useful powershell function which allows you to set auto admin login on local/remote computer easily. Thought of sharing it with my blog readers.

You have few pre-requisites to make this function work against remote computer.

1. Remote Registry should running

2. You should have proper access to WMI name space

In easy words, running with domain admin privileges works great.

Function Enable-AutoAdminLogon {
param (
  [Parameter(Mandatory=$false)]
     [String[]]$computerName = “.”,
  [Parameter(Mandatory=$false)]
  [String]$DefaultDomainName = $env:USERDOMAIN,
  [Parameter(Mandatory=$false)]
  [String]$DefaultUserName = $env:USERNAME,
  [Parameter(Mandatory=$true)]
  [String]$DefaultPassword,
  [Parameter(Mandatory=$false)]
  [Int]$AutoLogonCount
)
if ([IntPtr]::Size -eq 8) {
  $hostArchitecture = “amd64”
} else {
  $hostArchitecture = “x86”
}
foreach ($computer in $computerName) {
  if (($hostArchitecture -eq “x86”) -and ((Get-WmiObject -ComputerName $computer -Class Win32_OperatingSystem).OSArchitecture -eq “64-bit”)) {
   Write-Host “Remote System’s OS architecture is amd64. You must run this script from x64 PowerShell Host”
   continue
  } else {
   if ($computer -ne “.”) {
    if ((Get-Service -ComputerName $computer -Name RemoteRegistry).Status -ne “Running”) {
     Write-Error “remote registry service is not running on $($computer)”
     continue
    } else {
     Write-Verbose “Adding required registry values on $($computer)”
     $remoteRegBaseKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(‘LocalMachine’,$computer)
     $remoteRegSubKey = $remoteRegBaseKey.OpenSubKey(“SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon”,$true)
     $remoteRegSubKey.SetValue(“AutoAdminLogon”,1,[Microsoft.Win32.RegistryValueKind]::String)
     $remoteRegSubKey.SetValue(“DefaultDomainName”,$DefaultDomainName,[Microsoft.Win32.RegistryValueKind]::String)
     $remoteRegSubKey.SetValue(“DefaultUserName”,$DefaultUserName,[Microsoft.Win32.RegistryValueKind]::String)
     $remoteRegSubKey.SetValue(“DefaultPassword”,$DefaultPassword,[Microsoft.Win32.RegistryValueKind]::String)
     if ($AutoLogonCount) {
      $remoteRegSubKey.SetValue(“AutoLogonCount”,$AutoLogonCount,[Microsoft.Win32.RegistryValueKind]::DWord)
     }
    }
   } else {
    #do local modifications here
    Write-Verbose “Adding required registry values on $($computer)”
    Write-Verbose “Saving curent location”
    Push-Location
    Set-Location “HKLM:SoftwareMicrosoftWindows NTCurrentversionWinLogon”
    New-ItemProperty -Path $pwd.Path -Name “AutoAdminLogon” -Value 1 -PropertyType “String” -Force | Out-Null
    New-ItemProperty -Path $pwd.Path -Name “DefaultUserName” -Value $DefaultUserName -PropertyType “String” -Force | Out-Null
    New-ItemProperty -Path $pwd.Path -Name “DefaultPassword” -Value $DefaultPassword -PropertyType “String” -Force | Out-Null
    New-ItemProperty -Path $pwd.Path -Name “DefaultDomainName” -Value $DefaultDomainName -PropertyType “String” -Force | Out-Null
    if ($AutoLogonCount) {
     New-ItemProperty -Path $pwd.Path -Name “AutoLogonCount” -Value $AutoLogonCount -PropertyType “Dword” -Force | Out-Null
    }
    Write-Verbose “restoring earlier location”
    Pop-Location
   }
  }
}
}

[Source : Ravichaganti.com]

Exit mobile version