Skip to main content
Question

Using AWS VTL with Powershell Script to Load "Free" Tapes - Worked in V12, But Not V13

  • March 9, 2026
  • 5 comments
  • 27 views

We use AWS VTL for backing up some of our larger SMB file shares (mainly AWS FSx for Windows) that run into a few terabytes each.

When running a tape backup job we’d run a powershell script to check there were at least 10 free tapes before starting each job (there’s around four or five chained jobs).

The script worked fine on VBR v12, but always returns “TooManyRequests” on v13.

I have found various “retry” scripts, but the VBR commands ALWAYS return “TooManyRequests” so never complete.

Is there now an alternative method to auto load blank tapes that didn’t exist in v12?

Our script that worked in v12:

# Get Library
$NOVA_Tape_Library = Get-VBRTapeLibrary -Name "Novasol Gateway-VTL V3"

# Get Number of Free Tapes
$NOVA_Free_Tapes = (Get-VBRTapeMediaPool -Name "Free").medium | where {$_.LibraryId -eq $NOVA_Tape_Library.Id}

# if number of free tapes < 10 import tapes and format for use?
if ($NOVA_Free_Tapes.length -lt 10) {
write-host "Import Tapes"
Import-VBRTapeMedium -Library $NOVA_Tape_Library -Wait

# need to wait longer
Start-Sleep -s 20

write-host "Convert 'Unrecognized' to 'Free'"
# Get Number of Unrecognized Tapes
$NOVA_Unrecognized_Tapes = ($NOVA_Tape_Library | Get-VBRTapeMediaPool -Name "Unrecognized").medium | where {$_.LibraryId -eq $NOVA_Tape_Library.Id}
$NOVA_Unrecognized_Tapes | Set-VBRTapeMedium -MarkAsFree
}

Does anyone have any sort of fix for this?

Thanks,

Richie

5 comments

Chris.Childerhose
Forum|alt.badge.img+21

My guess would be one of the variables has changed in v13.  I know there is some case changes for variables how they are written.  I would check them against the help section to see.


Hi,

Pretty sure it’s down to the fact that Veeam have changed how the Powershell commands work and have rate limited them. Even just using Get-VBRTapeLibrary returns “TooManyRequests”

I’m going see if directly hitting the REST API works to rule that out.

Thanks,

Richie


Forum|alt.badge.img+3
  • Experienced User
  • March 9, 2026

@Richie Rogers Awaze UK 

 

Please open a Veeam Support case for the TooManyRequets response.

This is not expected and an investigation is required. It’s not about cmdlets changing, but rather the backup server responding to the number of requests being sent. For our supported cmdlets, this should not happen, so an investigation is required.

Currently we don’t have endpoints for Tape in the Backup Server REST API (planned), so a support case is the way to go here.

 


Jason Orchard-ingram micro
Forum|alt.badge.img+1

Have a quick scan of the cmdlet under v13 they appear to be the same

https://helpcenter.veeam.com/docs/vbr/powershell/tape_devices.html?ver=13

 

the only thing I can see there a variable called “-tapeserver” which your not calling in your Script

 

Get-VBRTapeLibrary [-TapeServer <VBRTapeServer[]>] [-Name <string[]>]  [<CommonParameters>]

 


As previously suggested a support case is recommended. 
 

 


Forum|alt.badge.img+3
  • Experienced User
  • March 10, 2026

I’m doubtful it’s about the -TapeServer parameter; -Name  vs -TapeServer differ only in that -Name requires a quick string match to find Libraries that match the string provided on -Name, while -TapeServer passes the specific server you want -- given they have hardcoded the full name of the Tape Library, I’m not sure we have excess processing between the two.

 

My guess is that there are a good number of tapes in the library, and Get-VBRTapeLibrary returns all mediums that are associated with the Library and this may be incorrectly triggering the error, but a Support case will be best way to approach resolving this.

Similarly, I have some notion a Backup Server reboot may alleviate the situation, but the root cause should still be investigated. (I wonder if some requests / processes are stuck on backup server basically and that’s why it’s returning TooManyRequests -- if it works after reboot, great but still need to figure out why it got stuck)