Windows-Server-2008-R2
wbadmin 備份所有本地驅動器
我正在嘗試找到一個
wbadmin
可以部署到各種 Server 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:
…等)解決問題,那麼我們得到ERROR - The path specified by 'g:' was not found
.請不要告訴我我必須列舉所有本地驅動器並這樣做。有沒有辦法告訴備份時
wbadmin
包括所有本地驅動器?
這是一個自動避免 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:)。