PowerShell创建本地管理员账户实现操作反馈与两次密码校验的方法
PowerShell 本地管理员账户创建脚本优化方案
实现需求
- 密码二次安全校验:两次输入密码不匹配时强制重新输入,避免输入失误
- 全流程结果反馈:每一步操作输出成功/失败提示,异常场景自动输出错误原因并清理残留数据
完整优化后代码
# 输入待创建的管理员账户名 $admin = Read-Host "请输入要创建的本地管理员账户名" # 密码二次校验循环逻辑 do { $Password = Read-Host "请输入账户密码" -AsSecureString $PasswordConfirm = Read-Host "请再次输入账户密码" -AsSecureString # 安全字符串转明文做对比,不会在控制台泄露密码内容 $plainPwd = [System.Net.NetworkCredential]::new("", $Password).Password $plainConfirmPwd = [System.Net.NetworkCredential]::new("", $PasswordConfirm).Password if ($plainPwd -ne $plainConfirmPwd) { Write-Host "两次输入的密码不一致,请重新输入" -ForegroundColor Red } } while ($plainPwd -ne $plainConfirmPwd) # 账户创建流程加异常捕获,实现结果反馈 try { # 创建本地用户 New-LocalUser -Name $admin -Password $Password -Description $admin -FullName $admin -ErrorAction Stop Write-Host "✅ 本地用户 $admin 创建成功" -ForegroundColor Green # 加入本地管理员组 Add-LocalGroupMember -Name "administrators" -Member $admin -ErrorAction Stop Write-Host "✅ 用户 $admin 已加入管理员组" -ForegroundColor Green # 配置账户过期规则 Set-LocalUser -Name $admin -PasswordNeverExpires $true -AccountNeverExpires -UserMayChangePassword $false -ErrorAction Stop Write-Host "✅ 用户 $admin 账户规则配置完成" -ForegroundColor Green Write-Host "`n🎉 所有操作执行成功,本地管理员账户 $admin 已生效" -ForegroundColor Green } catch { Write-Host "`n❌ 操作执行失败,错误信息:$_" -ForegroundColor Red # 自动清理创建失败的残留账户 if (Get-LocalUser -Name $admin -ErrorAction SilentlyContinue) { Remove-LocalUser -Name $admin -ErrorAction SilentlyContinue Write-Host "⚠️ 已清理创建失败的残留账户 $admin" -ForegroundColor Yellow } exit 1 }
核心逻辑说明
- 密码校验部分:使用
do-while循环实现重复输入逻辑,通过[System.Net.NetworkCredential]类转换安全字符串做对比,全程不会明文展示用户输入的密码内容,安全性不受影响 - 结果反馈部分:所有系统操作新增
-ErrorAction Stop参数,确保操作失败时触发终止错误被catch块捕获,成功操作输出绿色提示,失败操作输出红色错误信息,同时新增异常场景的残留账户自动清理逻辑,避免生成无效的半完成账户 - 规范优化:将原代码中的布尔值
1/0替换为PowerShell标准的$true/$false,兼容性更好
内容的提问来源于stack exchange,提问作者chkdsk
相关产品推荐
相关产品推荐

