AD域控组策略------禁用所有本地账号,只启用Administrator账号并统一重置密码

news/2026/1/18 20:53:48/文章来源:https://www.cnblogs.com/xiykj/p/19499099

powershell脚本代码如下【已在Windows7、Windows10、Windows11系统上测试功能正常】保存为*.ps1文件,组策略中调用此脚本,计算机配置------策略------Windows设置------脚本(启动/关机)------启动中引用脚本即可,先以下范围OU测试下,测试没问题再全范围推进

# Windows全自动账户管理脚本
# 功能:全自动禁用所有本地账户,启用Administrator,重置密码
# 要求:以管理员身份运行
# 特点:无确认提示,直接执行# 强制脚本以管理员身份运行
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
if (-not $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {Write-Host "错误:请以管理员身份运行此脚本!" -ForegroundColor RedWrite-Host "右键点击PowerShell -> 以管理员身份运行" -ForegroundColor YellowStart-Sleep -Seconds 3exit 1
}# 配置参数
$AdminAccount = "Administrator"
$NewPassword = "XiykjAdmin@123456#"
$LogFile = "C:\Windows\Temp\AutoAdminReset_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"# 开始日志记录
$logContent = @()
function Write-Log {param($Message, $Type = "INFO")$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"$logEntry = "[$timestamp] [$Type] $Message"$logContent += $logEntryWrite-Host $logEntry
}Write-Log "Windows全自动账户管理脚本开始执行"
Write-Log "脚本版本: 3.0"
Write-Log "操作系统: $((Get-CimInstance Win32_OperatingSystem).Caption)"
Write-Log "计算机名: $env:COMPUTERNAME"Write-Log "========================================================"
Write-Log "正在全自动执行以下操作:"
Write-Log "  1. 获取所有本地用户账户"
Write-Log "  2. 禁用所有非系统账户(除Administrator外)"
Write-Log "  3. 启用Administrator账户"
Write-Log "  4. 重置Administrator密码为: $NewPassword"
Write-Log "[自动模式] 跳过确认,直接执行..."
Write-Log "========================================================"# 步骤1:获取所有本地用户
Write-Log "步骤1: 获取所有本地用户账户..."
try {$localUsers = @()# 兼容Windows 7的获取用户方法if ($PSVersionTable.PSVersion.Major -ge 3) {$localUsers = Get-CimInstance -ClassName Win32_UserAccount -Filter "LocalAccount='True'" -ErrorAction Stop} else {$localUsers = Get-WmiObject -Class Win32_UserAccount -Filter "LocalAccount='True'" -ErrorAction Stop}$userCount = $localUsers.CountWrite-Log "共找到 $userCount 个本地用户"# 显示用户列表foreach ($user in $localUsers) {Write-Log "  发现用户: $($user.Name) (SID: $($user.SID))"}
} catch {Write-Log "获取用户失败: $_" -Type "ERROR"# 尝试使用net user命令try {$netUsers = net user 2>&1 | Where-Object {$_ -match '^\s*(\S+)\s*$' -and $_ -notmatch '命令成功完成|The command completed successfully|User accounts for'}$userCount = $netUsers.CountWrite-Log "通过net user获取到 $userCount 个用户"} catch {Write-Log "所有获取用户方法都失败" -Type "ERROR"$userCount = 0}
}# 步骤2:禁用所有非Administrator用户
Write-Log "步骤2: 禁用所有非Administrator用户..."
$disabledCount = 0# 需要跳过的系统账户
$systemAccounts = @("SYSTEM", "LOCAL SERVICE", "NETWORK SERVICE", "DefaultAccount")foreach ($user in $localUsers) {$userName = $user.Name# 跳过系统账户和Administratorif ($userName -eq $AdminAccount -or $systemAccounts -contains $userName) {continue}# 跳过系统SID账户if ($user.SID -match "^S-1-5-(18|19|20|21-.*-500)$") {Write-Log "  跳过系统账户: $userName"continue}Write-Log "  正在禁用用户: $userName"# 使用net user命令禁用(最兼容)try {$result = net user $userName /active:no 2>&1if ($LASTEXITCODE -eq 0 -or $result -match "命令成功完成|The command completed successfully") {Write-Log "    ✓ 成功禁用" -Type "SUCCESS"$disabledCount++} else {Write-Log "    ✗ 禁用失败: $result" -Type "ERROR"}} catch {Write-Log "    ✗ 禁用失败: $_" -Type "ERROR"}
}# 步骤3:启用Administrator账户
Write-Log "步骤3: 启用Administrator账户..."
$adminEnabled = $falsetry {# 使用net user命令启用$result = net user $AdminAccount /active:yes 2>&1if ($LASTEXITCODE -eq 0 -or $result -match "命令成功完成|The command completed successfully") {Write-Log "  ✓ Administrator已启用" -Type "SUCCESS"$adminEnabled = $true} else {Write-Log "  ! 启用失败,尝试创建账户" -Type "WARNING"# 尝试创建Administrator账户$result = net user $AdminAccount $NewPassword /add /active:yes 2>&1if ($LASTEXITCODE -eq 0) {Write-Log "  ✓ 创建并启用成功" -Type "SUCCESS"# 添加到管理员组net localgroup administrators $AdminAccount /add 2>&1 | Out-NullWrite-Log "  ✓ 已添加到管理员组" -Type "SUCCESS"$adminEnabled = $true} else {Write-Log "  ✗ 创建失败: $result" -Type "ERROR"}}
} catch {Write-Log "  ✗ 启用Administrator失败: $_" -Type "ERROR"
}# 步骤4:重置Administrator密码
Write-Log "步骤4: 重置Administrator密码..."
$passwordReset = $falseif ($adminEnabled) {try {$result = net user $AdminAccount $NewPassword 2>&1if ($LASTEXITCODE -eq 0 -or $result -match "命令成功完成|The command completed successfully") {Write-Log "  ✓ 密码重置成功" -Type "SUCCESS"$passwordReset = $true# 设置密码永不过期try {net accounts /maxpwage:unlimited 2>&1 | Out-NullWrite-Log "  ✓ 密码永不过期已设置" -Type "SUCCESS"} catch {Write-Log "  ! 设置密码永不过期失败" -Type "WARNING"}} else {Write-Log "  ✗ 密码重置失败: $result" -Type "ERROR"}} catch {Write-Log "  ✗ 密码重置失败: $_" -Type "ERROR"}
}# 步骤5:验证结果
Write-Log "步骤5: 验证操作结果..."# 验证Administrator是否已启用
try {$adminStatus = net user $AdminAccount 2>&1 | Select-String "帐户已启用|Account active"if ($adminStatus -match "是|Yes") {Write-Log "  ✓ Administrator账户状态: 已启用" -Type "SUCCESS"} else {Write-Log "  ✗ Administrator账户状态: 未启用" -Type "ERROR"}
} catch {Write-Log "  ! 无法验证Administrator状态" -Type "WARNING"
}# 完成摘要
Write-Host "`n" + ("=" * 60) -ForegroundColor Green
Write-Host "                   操作完成摘要" -ForegroundColor Green
Write-Host "=" * 60 -ForegroundColor Green
Write-Host ""
Write-Host "统计信息:" -ForegroundColor Yellow
Write-Host "  发现本地用户总数: $userCount" -ForegroundColor White
Write-Host "  已禁用的用户数: $disabledCount" -ForegroundColor White
Write-Host "  Administrator账户状态: $(if($adminEnabled){'已启用'}else{'失败'})" -ForegroundColor $(if($adminEnabled){'Green'}else{'Red'})
Write-Host "  密码重置状态: $(if($passwordReset){'成功'}else{'失败'})" -ForegroundColor $(if($passwordReset){'Green'}else{'Red'})
Write-Host ""
Write-Host "登录信息:" -ForegroundColor Yellow
Write-Host "  用户名: $AdminAccount" -ForegroundColor White
Write-Host "  密码: $NewPassword" -ForegroundColor White
Write-Host ""
Write-Host "系统信息:" -ForegroundColor Yellow
Write-Host "  计算机名: $env:COMPUTERNAME" -ForegroundColor White
Write-Host "  执行时间: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" -ForegroundColor White
Write-Host ""
Write-Host "重要提示:" -ForegroundColor Red
Write-Host "  1. 所有非系统本地账户已被禁用" -ForegroundColor Yellow
Write-Host "  2. 建议重启计算机使更改生效" -ForegroundColor Yellow
Write-Host "  3. 请立即使用新密码测试Administrator登录" -ForegroundColor Yellow
Write-Host "  4. 日志文件: $LogFile" -ForegroundColor Cyan# 记录摘要到日志
$logContent += "=" * 60
$logContent += "操作完成摘要:"
$logContent += "  发现本地用户总数: $userCount"
$logContent += "  已禁用的用户数: $disabledCount"
$logContent += "  Administrator账户状态: $(if($adminEnabled){'已启用'}else{'失败'})"
$logContent += "  密码重置状态: $(if($passwordReset){'成功'}else{'失败'})"
$logContent += "  登录信息:"
$logContent += "    用户名: $AdminAccount"
$logContent += "    密码: $NewPassword"
$logContent += "  系统信息:"
$logContent += "    计算机名: $env:COMPUTERNAME"
$logContent += "    执行时间: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')"# 保存日志文件,日志文件保存在客户端C:\Windows\Temp\AutoAdminReset_*.log文件[本功能已注释,防止运行一次生成日志文件占用存储,开启删除<# #>即可]
<# try {$logContent | Out-File -FilePath $LogFile -Encoding UTF8Write-Log "详细日志已保存到: $LogFile" -Type "INFO"
} catch {Write-Log "保存日志失败: $_" -Type "ERROR"
} #>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1179381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对于溢出数据的处理

对于溢出数据的处理方法一:取模 例:求1992的n次方的末两位数字 #include<iostream> using namespace std; int main() {int a=1,t=0,n;cin>>n;do{++t;a=(a*92)%100;//注意本题只能进行取模运算,因为结果…

道路抛洒物检测数据集1650张VOC+YOLO格式

道路抛洒物检测数据集1650张VOCYOLO格式数据集格式&#xff1a;VOC格式YOLO格式压缩包内含&#xff1a;3个文件夹&#xff0c;分别存储图片、xml、txt文件JPEGImages文件夹中jpg图片总计&#xff1a;1650Annotations文件夹中xml文件总计&#xff1a;1650labels文件夹中txt文件总…

5种空中飞行物数据集3936张VOC+YOLO格式

5种空中飞行物数据集3936张VOCYOLO格式数据集格式&#xff1a;VOC格式YOLO格式压缩包内含&#xff1a;3个文件夹&#xff0c;分别存储图片、xml、txt文件JPEGImages文件夹中jpg图片总计&#xff1a;3936Annotations文件夹中xml文件总计&#xff1a;3936labels文件夹中txt文件总…

顺序表(泛型)

package Data_Structure;import java.util.Scanner;public class SeqList<T> {private int length;static private int MAXSIZE =100;private Object[] data;// 0<=i<=length,允许在末尾的下一个位置插入…

后劲大到离谱 董子健导演首作看完缓了两天!

刚看完《我的朋友安德烈》那晚&#xff0c;我没事&#xff1b;结果第二天上班路上&#xff0c;脑子里突然闪过一个画面&#xff0c;鼻头一酸——坏了&#xff0c;这电影的后劲又上来了&#xff01;董子健第一次当导演&#xff0c;简直是个“隐藏高手”&#xff0c;片子没刻意煽…

穷举法

穷举法穷举法 遭遇解方程问题时,考虑穷举法,但注意穷举法一定要确定穷举范围。 题目一 一辆卡车违反交通规则,撞人后逃跑,现场有三人目击事件,但都没有记住车只记下车号的一些特征。 甲说:牌照的前两位数字是相同的;…

求最大公约数

求最大公约数求两个数的最大公约数 方法一 #include<iostream> using namespace std; int main() {int m,n,g;cin>>m>>n;g=m>n?n:m;//最大公约数有可能是二者之间的最小值 while((m%g!=0||n%g!=…

使用VS2022 Performance Profiler进行CPU分析

使用VS2022 Performance Profiler进行CPU分析将MyGame.exe设为Startup Project,并设置好命令行参数勾选CPU Usage 点击Start按钮,开始录制 Stop Collection之后,会开始加载符号 得到CPU性能查看的主界面 在时间…

swift高阶函数

swift高阶函数https://blog.csdn.net/m0_49556278/article/details/155072604漫思

【NWFSP问题】基于鳄鱼伏击算法CAOA求解零等待流水车间调度问题NWFSP附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

谢幕

18年初夏驶向广州的高铁 23年秋末马修派瑞的意外 这座透明华丽的牢笼,这场无理取闹的梦 想来是可以告一段落了 大概逐渐能够听着回忆的余音入睡 也可以悄悄修改床头藏起的画 大家都在结伴奔向自己的生活与理想 随机游…

【】

https://simonhancrew.github.io/posts/2025-02-24-tcp_ack_delay_and_nagle/

手动部署kiro到服务器上

主要自用,解决网络环境问题。使用kiro编辑器远程连接到Linux服务器 #!/bin/bash# 设置变量 (根据你之前的日志提取的 Commit ID) COMMIT_ID="e9761ecebe507c32c4eefdc1f4f0a85a2bb29529" SOURCE_FILE="…

亲测好用!专科生毕业论文必备TOP9一键生成论文工具

亲测好用&#xff01;专科生毕业论文必备TOP9一键生成论文工具 2026年专科生毕业论文写作工具测评&#xff1a;为何需要这份榜单&#xff1f; 随着高校教育的不断深化&#xff0c;专科生在毕业论文撰写过程中面临的挑战也日益增多。从选题构思到资料搜集&#xff0c;再到内容撰…

[Android] 布丁扫描v3.4.2.2

[Android] 布丁扫描v3.4.2.2 链接&#xff1a;https://pan.xunlei.com/s/VOjG3oDQf_n0FZGn_4tWJlOAA1?pwdr23x# 功能很强大的&#xff0c;扫描完之后得点右下角的三个小点&#xff0c;导出PDF或者图片。

hotspot中的Java类对象如何保存注解

hotspot中的Java类对象如何保存注解 注解 Java 注解&#xff08;Annotation&#xff09;又称 Java 标注&#xff0c;是 JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同&#xff0c;Java 标注可以通过反射获取标注内容。…

hotspot中的Java类对象如何保存虚函数

hotspot中的Java类对象如何保存虚函数 定义 在Java中,几乎所有可被继承的函数被称为虚函数。 In HotSpot, a virtual method is essentially:Any non-static, non-private, non-final instance method whose invocation target is determined at runtime based on the actual…

冥想第一千七百六十七天(1767)

1.今天早上去跑步&#xff0c;然后就去了那个&#xff0c;然后高速后面那个地方&#xff0c;然后早上的时候那个地方没有人&#xff0c;不过在路上碰到了一个人有点怪异&#xff0c;就是他&#xff0c;然后对着电线杆&#xff0c;然后一直看不到脸我看到的时候他一直低着头&…

强烈安利9个AI论文写作软件,本科生论文无忧!

强烈安利9个AI论文写作软件&#xff0c;本科生论文无忧&#xff01; 1.「千笔」—— 一站式学术支持“专家”&#xff0c;从初稿到降重一步到位&#xff08;推荐指数&#xff1a;★★★★★&#xff09;在论文写作过程中&#xff0c;很多本科生常常面临查重率高、内容重复、语言…

缓存 --- Redis缓存的一致性

缓存 --- Redis缓存的一致性核心问题&#xff1a;更新数据库与缓存的顺序抉择方案一&#xff1a;直接更新缓存&#xff08;不推荐&#xff09;方案二&#xff1a;删除缓存&#xff08;让缓存失效&#xff0c;推荐&#xff09;进阶优化&#xff1a;解决极端场景下的一致性问题各…