Загрузка данных


$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 "========================================"