这是我在本系列中的第四个和最终帖子。在最后一篇文章中,我将包装我们一直在努力的备份脚本。大多数这篇文章将是代码,所以介意格式化。
要启动问题,我们需要首先取消暂停我们之前暂停的所有虚拟机。我们正在这样做,因为我们已经拍摄了所有VM的拍摄。没有必要将这些VM保持暂停,因为这将打败脚本的目的。
foreach($ server中的$服务器){#我们需要确保只能取消暂停服务器#我们暂停了。if($ server.paused -eq“是”){$ vm = $ msvs.findvirtualmachine($ server.name)$ null = [microsoft.virtualserver.intorop.powershell] :: seteCurity($ VM)#现在我们有快照我们可以取消暂停VM。$进度= $ vm.startup()$ null =`[Microsoft.VirtualServer.Interop.Powershell] :: SeteSecurity($进度)#再次我们展示我们正在做的行动的进度。而($ progress.percentCompleted -lt 100){写入进展 - 自动率“启动 - $($ server.name)”`-status“进步:”`-percenclete($ progress.percentCompleted)}}}
接下来,我们需要在使用RoboCopy将拍摄拍摄复制到我们的备份位置之前安装每个快照。
foreach($ drive $ drive){$ id = $ drive.id$ path = join-path $ scriptpath $ ID$ null = mkdir $ path$ null =。\资源\ vshadow.exe“-el =`{$ ID`},$ path”}
安装每个快照后,我们现在需要使用Robocopy将它们复制到$ destpath变量中定义的路径。以下循环处理我们:
foreach($ server中的$服务器){#以防万一您想要具有日志文件。$ logfilename =“。\ logs \ msvsbackup_”+ $ server.name +“.log”$ backuppath = join-path $ destpath $ server.name$ ID = $ DRIVE |其中{$ _。drive -eq $ server.drive} |选择ID.$ sourcestem = $ server.path$ sourcestem = $ sourcestem.substring(2,$ sourcestem.length - 2)$ sourcepath =加入路径$ sourcepath $ sourcestem。\ Resources \ Robocopy.exe $ SourcePath $ BackupPath / Tee /日志:$ logfileName}
$ sourcepath = join-path $ scriptpath $ id.id
最后,在将拍摄拍摄全部复制后,我们需要删除它们。以下几点代码会:
foreach($ drive $ drive){$ id = $ drive.id$ null =。\资源\ vshadow.exe“-DS =`{$ ID`}”删除 - 项目$ ID}
希望这个系列有用。随着时间的推移,我计划发布更多我的生产脚本,以便其他人可以使用它们。但是,如果网络世界将更容易地发布源代码,则肯定会很好。然后我可能更倾向于发布一点。