29 lines
829 B
PowerShell
29 lines
829 B
PowerShell
# PowerShell User Audit Script
|
|
|
|
# Get all local usernames as strings
|
|
#! Get-LocalUser returns objects, not just strings.
|
|
#! -split $users is incorrect for objects.
|
|
$users = Get-LocalUser | Select-Object -ExpandProperty Name
|
|
|
|
foreach ($username in $users) {
|
|
$badChar = $false
|
|
|
|
# Check each character
|
|
foreach ($char in $username.ToCharArray()) {
|
|
if ($char -notmatch "[A-Za-z]") {
|
|
$badChar = $true
|
|
break
|
|
}
|
|
}
|
|
|
|
# Check first character
|
|
$firstChar = $username[0]
|
|
$validFirstLetter = $firstChar -match "[A-Za-z]"
|
|
|
|
# Flag invalid usernames
|
|
# * Note: -ge 20 includes length 20. If you want max length 20 valid, use -gt 20.
|
|
if ($badChar -or $username.Length -gt 20 -or -not $validFirstLetter) {
|
|
Write-Host "The username '$username' is invalid"
|
|
}
|
|
}
|