本文目录导读:

我来为您介绍编写自动恢复出厂设置脚本的方法,针对不同操作系统会有不同的实现方式。
Windows 系统
使用系统重置功能(PowerShell脚本)
# Windows 10/11 恢复出厂设置脚本
# 需要管理员权限运行
# 检查是否以管理员身份运行
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Host "请以管理员身份运行此脚本" -ForegroundColor Red
exit 1
}
Write-Host "准备恢复出厂设置..." -ForegroundColor Yellow
Write-Host "警告:此操作将删除所有个人文件和应用!" -ForegroundColor Red
# 确认操作
$confirmation = Read-Host "是否继续?(Y/N)"
if ($confirmation -ne 'Y' -and $confirmation -ne 'y') {
Write-Host "操作已取消" -ForegroundColor Yellow
exit
}
# 执行恢复出厂设置
try {
# 使用系统重置功能
Start-Process -FilePath "systemreset" -ArgumentList "-factoryreset" -Wait -NoNewWindow
Write-Host "恢复出厂设置命令已执行" -ForegroundColor Green
} catch {
Write-Error "执行失败: $_"
}
完全自动重启到恢复模式(Windows 10/11)
# 自动重启到恢复环境并执行重置 # 需要管理员权限 # 创建自动重置计划 $resetCommand = @' # 自动恢复脚本 - 将在恢复环境中执行 Start-Process -FilePath "systemreset" -ArgumentList "-factoryreset /quiet /noconfirm" -Wait '@ # 保存为临时脚本 $tempScript = [System.IO.Path]::GetTempFileName() + ".ps1" $resetCommand | Out-File -FilePath $tempScript -Encoding UTF8 # 设置计划任务在系统启动时运行 $action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-ExecutionPolicy Bypass -File `"$tempScript`"" $trigger = New-ScheduledTaskTrigger -AtStartup $principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries Register-ScheduledTask -TaskName "FactoryResetAuto" -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Force # 重启系统 Restart-Computer -Force
Linux 系统
通用Linux恢复脚本
#!/bin/bash
# Linux 恢复出厂设置脚本
# 需要root权限执行
# 检查root权限
if [ "$EUID" -ne 0 ]; then
echo "请以root权限运行此脚本"
exit 1
fi
echo "===== 系统恢复出厂设置 ====="
echo "警告:此操作将删除所有系统数据!"
echo "请确保已备份重要文件!"
# 确认操作
read -p "是否继续?(y/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "操作已取消"
exit 1
fi
# 根据发行版执行不同操作
if [ -f /etc/debian_version ]; then
# Debian/Ubuntu系统 - 重置为初始配置
echo "检测到Debian/Ubuntu系统..."
# 恢复默认配置文件
dpkg --configure -a
# 清除用户数据(保留系统文件)
rm -rf /home/*
rm -rf /tmp/*
rm -rf /var/tmp/*
# 重置服务配置
apt-get --reinstall install -y $(dpkg -l | grep '^ii' | awk '{print $2}')
elif [ -f /etc/redhat-release ]; then
# CentOS/RHEL系统
echo "检测到CentOS/RHEL系统..."
# 恢复默认系统文件
rpm --rebuilddb
yum reinstall -y $(rpm -qa)
# 清理用户数据
rm -rf /home/*
else
# 通用Linux恢复
echo "通用Linux恢复..."
# 清除用户配置
for user_home in /home/*; do
if [ -d "$user_home" ]; then
rm -rf "$user_home"/*
fi
done
fi
echo "系统恢复完成!"
echo "建议重启系统以应用更改。"
高级Linux重置脚本(带备份功能)
#!/bin/bash
# 高级恢复出厂设置脚本
# 包含备份和恢复点功能
BACKUP_DIR="/backup/factory_reset"
DATE=$(date +%Y%m%d_%H%M%S)
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
# 错误处理函数
error_exit() {
echo -e "${RED}错误: $1${NC}" >&2
exit 1
}
# 检查root权限
check_root() {
if [ "$EUID" -ne 0 ]; then
error_exit "请以root权限运行此脚本"
fi
}
# 创建系统快照(备份)
create_snapshot() {
echo -e "${YELLOW}创建系统快照...${NC}"
mkdir -p "$BACKUP_DIR"
# 备份关键系统配置
cp -r /etc "$BACKUP_DIR/etc_backup_$DATE" 2>/dev/null
cp /etc/fstab "$BACKUP_DIR/fstab_backup_$DATE" 2>/dev/null
# 备份用户列表
getent passwd > "$BACKUP_DIR/passwd_backup_$DATE"
getent group > "$BACKUP_DIR/group_backup_$DATE"
echo -e "${GREEN}快照已创建: $BACKUP_DIR${NC}"
}
# 恢复出厂设置
factory_reset() {
echo -e "${RED}开始恢复出厂设置...${NC}"
# 1. 停止所有用户进程
echo "停止用户进程..."
pkill -u $(ls /home/) 2>/dev/null
# 2. 清除用户数据
echo "清除用户数据..."
for user_dir in /home/*; do
if [ -d "$user_dir" ]; then
rm -rf "$user_dir"
fi
done
# 3. 重置系统配置
echo "重置系统配置..."
if command -v dpkg &> /dev/null; then
dpkg --configure -a
dpkg --audit
fi
# 4. 重置网络配置
echo "重置网络配置..."
cat > /etc/hostname << EOF
localhost
EOF
cat > /etc/hosts << EOF
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
EOF
# 5. 清除日志和临时文件
echo "清除日志文件..."
find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
rm -rf /tmp/*
rm -rf /var/tmp/*
echo -e "${GREEN}恢复出厂设置完成!${NC}"
}
# 主函数
main() {
check_root
echo "================================="
echo " 恢复出厂设置工具 v1.0"
echo "================================="
echo "1. 创建系统快照并恢复"
echo "2. 直接恢复(不备份)"
echo "3. 退出"
echo "================================="
read -p "请选择操作 [1-3]: " choice
case $choice in
1)
create_snapshot
read -p "是否继续恢复出厂设置?(y/n): " confirm
if [[ $confirm =~ ^[Yy]$ ]]; then
factory_reset
fi
;;
2)
read -p "警告:将删除所有数据!确认?(yes/no): " confirm
if [ "$confirm" = "yes" ]; then
factory_reset
fi
;;
3)
echo "退出"
exit 0
;;
*)
echo "无效选择"
exit 1
;;
esac
}
# 执行主函数
main
macOS 系统
macOS恢复出厂设置脚本
#!/bin/bash
# macOS 恢复出厂设置脚本
# 需要管理员权限
echo "macOS 恢复出厂设置"
echo "=================="
# 检查权限
if [ "$EUID" -ne 0 ]; then
echo "请使用 sudo 运行此脚本"
exit 1
fi
echo "警告:此操作将清除所有用户数据!"
# 确认操作
read -p "是否继续?(y/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
# 1. 关闭系统完整性保护(SIP)提示
echo "注意:如果SIP已启用,请先在恢复模式中禁用它"
# 2. 清除用户数据
echo "清除用户数据..."
dscl . -list /Users | grep -v "^_" | grep -v "root" | grep -v "daemon" | while read user; do
if [ "$user" != "nobody" ]; then
dscl . -delete /Users/$user
fi
done
# 3. 重置系统配置
echo "重置系统配置..."
rm -rf /Library/Preferences/*
rm -rf /Library/Caches/*
# 4. 清除日志
echo "清除系统日志..."
rm -rf /var/log/*
# 5. 清除临时文件
echo "清除临时文件..."
rm -rf /private/var/tmp/*
rm -rf /private/tmp/*
echo "恢复出厂设置完成!"
echo "建议重启系统后进入恢复模式执行完整恢复。"
重要安全提示
- 备份数据:执行任何恢复操作前,务必备份重要数据
- 权限要求:大多数恢复操作需要管理员/root权限
- 测试环境:先在虚拟机或测试环境测试脚本
- 法律合规:确保有权限执行这些操作
- 系统要求:不同系统和版本可能需要调整脚本
执行建议
- 在开发/测试环境先测试脚本
- 添加详细的日志记录
- 提供撤销/回滚机制
- 考虑使用系统原生的恢复功能
- 为关键操作添加多重确认
选择适合您需求的脚本,并根据具体系统环境进行调整,对于生产环境,建议使用系统官方提供的恢复工具。