$User = "auditadmin"
$Chars = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789!@#$%_-+="
$PlainPassword = -join (1..24 | ForEach-Object {
$Chars[(Get-Random -Maximum $Chars.Length)]
})
$SecurePassword = ConvertTo-SecureString $PlainPassword -AsPlainText -Force
if (Get-LocalUser -Name $User -ErrorAction SilentlyContinue) {
Set-LocalUser -Name $User -Password $SecurePassword
} else {
New-LocalUser `
-Name $User `
-Password $SecurePassword `
-PasswordNeverExpires `
-AccountNeverExpires `
-Description "Temporary laptop audit account"
}
$AdminGroup = Get-LocalGroup -SID "S-1-5-32-544"
$AlreadyAdmin = Get-LocalGroupMember -Group $AdminGroup.Name -ErrorAction SilentlyContinue |
Where-Object { $_.Name -match "\\$User$" }
if (-not $AlreadyAdmin) {
Add-LocalGroupMember -Group $AdminGroup.Name -Member $User
}
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Set-Service WinRM -StartupType Automatic
Start-Service WinRM
New-ItemProperty `
-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" `
-Name "LocalAccountTokenFilterPolicy" `
-PropertyType DWord `
-Value 1 `
-Force | Out-Null
$IP = Get-NetIPConfiguration |
Where-Object {
$_.IPv4DefaultGateway -ne $null -and
$_.NetAdapter.Status -eq "Up"
} |
Select-Object -First 1 -ExpandProperty IPv4Address |
Select-Object -ExpandProperty IPAddress
Write-Host ""
Write-Host "========================================"
Write-Host "READY FOR REMOTE AUDIT"
Write-Host "========================================"
Write-Host "IP=$IP"
Write-Host "USER=$User"
Write-Host "PASS=$PlainPassword"
Write-Host "HOSTNAME=$env:COMPUTERNAME"
Write-Host "========================================"