更高级的 PowerShell 脚本示例,用于执行 VSS 结合 WIM 备份和恢复,包含错误处理和日志记录功能。高阶的 PowerShell 脚本示例,用于 VSS 结合 WIM 备份和恢复:

news/2024/9/23 4:26:34/文章来源:https://www.cnblogs.com/suv789/p/18426207

更高级的 PowerShell 脚本示例,用于执行 VSS 结合 WIM 备份和恢复,包含错误处理和日志记录功能。

高阶备份脚本

powershellCopy Code
# 定义备份路径和文件
$backupDir = "C:\Backup"
$wimFile = "$backupDir\SystemBackup.wim"
$logFile = "$backupDir\BackupLog.txt"# 创建备份目录
if (-Not (Test-Path $backupDir)) {New-Item -ItemType Directory -Path $backupDir -Force | Out-Null
}# 创建日志记录函数
function Log-Message {param ([string]$message)$timestamp = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss")"$timestamp - $message" | Out-File -FilePath $logFile -Append -Force
}# 开始备份
Log-Message "开始备份..."try {# 创建 VSS 备份脚本$diskshadowScript = @"
set context persistent
add volume C: alias SystemVolume
create
expose %SystemVolume% X:
dismount
exit
"@$diskshadowPath = "$backupDir\VSSBackup.txt"$diskshadowScript | Set-Content -Path $diskshadowPath# 执行 Diskshadowdiskshadow /s $diskshadowPath# 备份映像Dism /Capture-Image /ImageFile:$wimFile /CaptureDir:X:\ /Name:"System Backup" /Compress:max /VerifyLog-Message "备份成功,文件: $wimFile"
} catch {Log-Message "备份失败: $_"
} finally {# 清理Remove-Item $diskshadowPath -ErrorAction SilentlyContinue
}Log-Message "备份过程结束。"

高阶恢复脚本

powershellCopy Code
# 定义恢复路径和 WIM 文件
$wimFile = "C:\Backup\SystemBackup.wim"
$restoreDir = "C:\"
$logFile = "$backupDir\RestoreLog.txt"# 创建日志记录函数
function Log-Message {param ([string]$message)$timestamp = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss")"$timestamp - $message" | Out-File -FilePath $logFile -Append -Force
}# 开始恢复
Log-Message "开始恢复..."try {# 确认 WIM 文件存在if (-Not (Test-Path $wimFile)) {throw "WIM 文件未找到!"}# 恢复映像Dism /Apply-Image /ImageFile:$wimFile /Index:1 /ApplyDir:$restoreDir /VerifyLog-Message "恢复成功,目录: $restoreDir"
} catch {Log-Message "恢复失败: $_"
}Log-Message "恢复过程结束。"

注意事项

  1. 错误处理: 脚本包含错误处理和日志记录,以便于追踪和调试。
  2. 管理员权限: 确保以管理员身份运行脚本。
  3. 路径: 根据需要修改路径和文件名。
  4. 日志文件: 每次备份和恢复会在指定目录中创建日志文件,方便查看历史记录。

高阶的 PowerShell 脚本示例,用于 VSS 结合 WIM 备份和恢复:

高阶备份示例

powershellCopy Code
# 定义备份路径和文件
$backupDir = "C:\Backup"
$wimFile = "$backupDir\SystemBackup.wim"# 创建备份目录
if (-Not (Test-Path $backupDir)) {New-Item -ItemType Directory -Path $backupDir
}# 创建 VSS 备份
$diskshadowScript = @"
set context persistent
add volume C: alias SystemVolume
create
expose %SystemVolume% X:
dismount
exit
"@# 将脚本写入文件
$diskshadowPath = "$backupDir\VSSBackup.txt"
$diskshadowScript | Set-Content -Path $diskshadowPath# 执行 Diskshadow
diskshadow /s $diskshadowPath# 备份映像
Dism /Capture-Image /ImageFile:$wimFile /CaptureDir:X:\ /Name:"System Backup" /Compress:max /Verify# 清理
Remove-Item $diskshadowPath

高阶恢复示例

powershellCopy Code
# 定义恢复路径和 WIM 文件
$wimFile = "C:\Backup\SystemBackup.wim"
$restoreDir = "C:\"# 确认 WIM 文件存在
if (-Not (Test-Path $wimFile)) {throw "WIM file not found!"
}# 恢复映像
Dism /Apply-Image /ImageFile:$wimFile /Index:1 /ApplyDir:$restoreDir /Verify# 可选:设置系统引导
bcdboot $restoreDir

注意事项

  • 确保以管理员身份运行脚本。
  • 修改路径以适应具体环境。
  • 使用 bcdboot 设置引导选项(如有需要)。

PowerShell 进行 VSS 结合 WIM 备份和恢复的示例脚本:

备份示例

powershellCopy Code
# 创建 VSS 备份
$backupDir = "C:\Backup"
$wimFile = "$backupDir\SystemBackup.wim"# 创建备份目录(如果不存在)
if (-Not (Test-Path $backupDir)) {New-Item -ItemType Directory -Path $backupDir
}# 使用 Diskshadow 创建 VSS 备份
diskshadow /s "C:\Scripts\VSSBackup.txt"# VSSBackup.txt 内容
# set context persistent
# add volume C: alias SystemVolume
# create
# expose %SystemVolume% X:
# dismount
# exit# 将 VSS 备份保存为 WIM 文件
Dism /Capture-Image /ImageFile:$wimFile /CaptureDir:X:\ /Name:"System Backup"

恢复示例

powershellCopy Code
# 恢复系统
$wimFile = "C:\Backup\SystemBackup.wim"
$restoreDir = "C:\"# 使用 Dism 进行恢复
Dism /Apply-Image /ImageFile:$wimFile /Index:1 /ApplyDir:$restoreDir

注意事项

  • 运行 PowerShell 时需要管理员权限。
  • 确保 Diskshadow 和 Dism 工具在系统中可用。
  • 修改路径和文件名以适应你的环境。

 

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

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

相关文章

Java代码审计篇 - ofcms系统审计思路讲解 - 篇2 - SQL注入漏洞审计

Java代码审计篇 | ofcms系统审计思路讲解 - 篇2 | SQL注入漏洞审计 1. 前言 我发现很多文章包括教程,大概套路是:只说有漏洞的点,将有漏洞的点指出,然后分析代码;或者黑盒测试出漏洞之后,然后分析代码。 我认为这是在分析漏洞代码,而非代码审计。代码审计文章或教程应该…

Java代码审计篇 - ofcms系统审计思路讲解 - 篇3 - 文件上传漏洞审计

Java代码审计篇 | ofcms系统审计思路讲解 - 篇3 | 文件上传漏洞审计 1 文件上传代码审计【有1处】 文件上传漏洞我们需要着重关注的是文件在被java代码解析到保存下来之间有无验证过滤,因此什么样的上传方式,什么样的保存方式都不重要,大家着重关注代码对文件的验证过滤手段…

Java代码审计篇 - ofcms系统审计思路讲解 - 篇4 - XXE漏洞审计

Java代码审计篇 | ofcms系统审计思路讲解 - 篇4 | XXE漏洞审计 1. XXE代码审计【有1处】 XXE代码审计常搜索的关键字如下: XMLReader SAXBuilder SAXReader SAXParserFactory Digester DocumentBuilderFactory ...还有一个特殊的,用于加载.jrxml 文件,这是 JasperReports 特…

Java反序列化利用链篇 | CC6链分析(通用版CC链)

CC6 CC6和CC1之间的区别 在CC1的LazyMap链中,调用链如下: AnnotationInvocationHandler.readObject() Map(Proxy).entrySet() LazyMap.get() ChainedTransformer.transform() InvokerTransformer.transform() Runtime.exec()而在CC1链中,对CommonsCollections和jdk版本是有限…

Java反序列化利用链篇 | CC3链分析、TemplatesImpl类中的调用链、TrAXFilter、InstantiateTransformer类的transform()【本系列文章的分析重点】

CC3链分析 1. CC3链背景 前面介绍了CC1和CC6,这两条链子虽然前面的入口类不同CC1入口类是AnnotationInvocationHandler CC6入口类是HashMap但是其触发恶意代码的方式是相同的,都是InvokerTransformer.transform()触发Runtime.getRuntime().exec()实现命令执行。而在很多情况下…

VUE学习day one

学习来源:【前端最新Vue2+Vue3基础入门到实战项目全套教程,自学前端vue就选黑马程序员,一套全通关!】https://www.bilibili.com/video/BV1HV4y1a7n4?vd_source=6dac49feb8d7fd76b147c8cf8c0c2b5a Vue是什么?Vue是一个用于构建用户界面(基于数据动态渲染出用户看到的页面)…

全网最适合入门的面向对象编程教程:51 Python 函数方法与接口-使用 Zope 实现接口

在 Python 中,Zope 提供了一种机制来定义和实现接口。Zope 的接口模块通常用于创建可重用的组件,并确保组件遵循特定的接口规范。全网最适合入门的面向对象编程教程:51 Python 函数方法与接口-使用 Zope 实现接口摘要: 在 Python 中,Zope 提供了一种机制来定义和实现接口。…

Java反序列化利用链篇 | CC1链的第二种方式-LazyMap版调用链【本系列文章的分析重点】

CC1链的第二种方式-LazyMap版调用链 目录LazyMap构造payloadCC1的调用链参考链接LazyMap 在之前的CC1链中分析,其实是其中一种方式(国内版本),还有另外一种方式,也是ysoserial中的CC1链的方式(国外版本)。 区别在于调用transform的类是不同的。 在寻找transform调用的时…

瑞云科技AIGC云平台:重塑电商设计流程!

在快节奏的电商市场中,商品更新换代的速度越来越快,而电商设计团队传统的设计流程和工作模式却难以满足当前行业对快速响应、高效发展和降低成本的实际需求.对此,瑞云科技针对电商设计行业的痛点,提供了全新的AIGC创作云平台.从2022年ChatGPT的发布到,AI正以惊人的速度席卷全球…

学习高校课程-软件工程-敏捷开发(ch5)

WHAT IS AGILITY 什么是敏捷性 An agile team is a nimble team able to appropriately respond to changes. Change is what software development is very much about. Changes in the software being built, changes to the team members, changes because of new technolog…

从零开始一个git操作实例,图文并茂

徒弟不懂git怎么用, 于是写了篇文章, 把本地git操作从头写了一遍, 自己去看吧!0、基本概念 •Git是一个免费、开源的、分布式版本控制系统 •它使用一个特殊的叫做仓库的数据库来记录文件的变化 •仓库中的每个文件都有一个完整的版本历史记录 1)安装 sudo apt-update sud…