我试图找到一个适合所有wbadmin脚本的单一大小的脚本,我可以将它部署到各种服务器2008 R2服务器上。
我遇到的问题是,虽然所有的服务器都有一个C:,一些服务器有一个E:,一些服务器有一个E:和一个F:,有些服务器只有一个F:。
以下命令:
wbadmin enable backup -addtarget:\\backup1\Backups -schedule:23:00 -systemState -allCritical -vssFull -user:backupservice@domain.local -password:ladidada -quiet只备份C:而且我在wbadmin中看不到备份所有本地驱动器的任何选项。当然,如果我尝试用机枪(通过添加-include:c:,d:,e:,f:...etc)来解决这个问题,那么我们就得到了ERROR - The path specified by 'g:' was not found。
请不要告诉我,我必须让所有的本地驱动器,并这样做。有没有办法告诉wbadmin在备份时包括所有本地驱动器?
发布于 2011-10-03 20:26:15
这里有一个自动避免cd/dvd的变化。它只故意备份硬盘。
@echo off
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
set remotebackup=\\backupserver\path
for /F "usebackq eol=: skip=1 tokens=1" %%a in (
`wmic logicaldisk where "drivetype=3" get deviceid`
) do (
set "_drive=%%a:"
set "_HDL=!_HDL!!_drive:~0,2!,"
)
if "%_HDL:~-1%"=="," (set _HDL=%_HDL:~0,-1%)
if "%_HDL:~-2%"==",:" (set _HDL=%_HDL:~0,-2%)
echo Found: %_HDL%
wbadmin start backup -backuptarget:%remotebackup% -include:!_HDL! -allCritical -vssCopy -quiet -systemState这构成了预定任务的一部分,这就是为什么使用wbadmin start而不是wbadmin enable。
这里感兴趣的部分是"drivetype=3"和使用usebackq (必需)。
马克的代码有助于追踪这件事。
if语句如果存在,则移除最后一个逗号或逗号和冒号。想不出更简单的办法来做到这一点。%%a被复制到_drive中,因此可以使用:~0,2语法将其裁剪到前2个字符(C:)。
发布于 2011-04-13 14:57:32
虽然从wmi中查找驱动器列表的解决方案会更好。如果你知道你只有e: f:和g:那么这会很好
set wbinclude=
if exist e:\*.* set wbinclude=e:\
if exist f:\*.* set wbinclude=%wbinclude% f:\
if exist g:\*.* set wbinclude=%wbinclude% f:\
if not "%wbinclude%"=="" set wbinclude=-includes %wbinclude%
echo wbadmin enable backup -addtarget:\\backup1\Backups -schedule:23:00 -systemState -allCritical -vssFull -user:backupservice@domain.local -password:ladidada -quiet %wbinclude%https://serverfault.com/questions/259098
复制相似问题