Scripting Backup Exec 2012 – P2 – Creating a New Backup with Powershell


In Part 2 of Scripting Backup Exec 2012, I’ll be illustrating how to create a Windows file backup from scratch using Powershell. For a basic rundown of the components, concepts and gotchas for this process, please see Part 1.


  1. A fully patched and up to date installation of Backup Exec 2012
  2. Powershell and (advantageous) basic Powershell knowledge
  3. An unrestricted execution policy
  4. A pre-installed and trusted Windows Agent added to the Backup Exec server.

The Script

As mentioned in Part 1 to successfully create a backup job we need to programmatically the following components:

  • Backup Definition (superordinate container)
    • Backup Agent (the server we’re backing up)
    • Filesystem Selection (what files we’re backing up)
    • System State Selection (whether we’re backing up the system state)
    • Backup Job Default (the default template which we will base this on)
    • Backup Definition Name
  • Backup Task
    • Backup Definition
    • Retention Period (in hours)
    • Schedule

Items in bold must be created using a cmdlet, items in italics can be specified as a string/int, or as an array/cmdlet for extra flexibility, and normal items are only specified by string or integer.

Creating the Backup Definition

The cmdlet used to create a new definition is


But before we do that, we need to specify which server we’re going to be backing up to, which will be done using:

Get-BeAgentServer “server11*”

You’ll note the asterix at the end. This is to allow for the possibility of a fully qualified server name (i.e. a server name with the domain on the end). Unfortunately Backup Exec doesn’t seem to be consistent in adding servers either with simply the hostname or fully qualified.

So a quick and simple bringing together of these commands would be the following:

$agentServer = getBeAgentServer “server11*”

New-BEBackupDefinition -BackupJobDefault BackupToDisk -FileSystemSelection “C:\*” -SystemStateSelection Excluded -name “New Backup Definition” -AgentServer $agentServer

As you can probably guess, this will create a backup-to-disk definition called “New Backup Definition” that backs up the C:\ drive, but not the system state, of a server called “server11”.

Gotcha: If you have a slightly myopic naming convention, this will also match “server111”, there are easy ways around this, but I’ll cover that in a later part.

Multiple Directory Selection & Exclusions

The code above is all well and good if you just want to backup the C:\ drive, but what if you want to backup, say, the Z:\ drive as well? Simple! Put them in an array!

$selection = @(“C:\*”, “Z:\*”)
New-BEBackupDefinition […] -FileSystemSelection $selection […]

Easy, right? But what if you want to exclude a directory? Then you’ll need to use our new friend:


For example, if we want to include C:\ and Z:\, but exclude C:\Windows, we would do something like the following:

# Include the following directories
$selection= @(New-BEFileSystemSelection -path “C:\*”  -PathIsDirectory -Recurse)
$selection += New-BEFileSystemSelection -path “Z:\* -PathIsDirectory -Recurse

#Exclude the following directories
$selection += New-BEFileSystemSelection -path “C:\Windows\* -PathIsDirectory -Exclude

And then pass it to New-BEBackupDefinition.

The Script so Far

So far we haven’t done anything especially complicated, we’ve created a backup definition from defaults, with customised selection and pointed at the client we specified. So far our script looks like this:

# Select the correct server
$agentServer = getBeAgentServer “server11*”

# Include the following directories
$selection= @(New-BEFileSystemSelection -path “C:\*”  -PathIsDirectory -Recurse)
$selection += New-BEFileSystemSelection -path “Z:\* -PathIsDirectory -Recurse

# Exclude the following directories
$selection += New-BEFileSystemSelection -path “C:\Windows\* -PathIsDirectory -Exclude

# Create the Backup definition based on defaults
New-BEBackupDefinition -BackupJobDefault BackupToDisk -FileSystemSelection $selection -SystemStateSelection Excluded -name “New Backup Definition” -AgentServer $agentServer

It’s to important to note that at this point, the definition will contain the tasks defined in the default “BackupToDisk” job, namely a Full and an Incremental with fairly short retention periods.

How do we customise the tasks? You’ll see in Part 3 Customising and Adding Backup Tasks!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: