Windows-Server-2008-R2

wbadmin 備份所有本地驅動器

  • November 18, 2014

我正在嘗試找到一個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:)。

引用自:https://serverfault.com/questions/259098