I decided to throw out this Post/Discussion to the great Thwack Community. I needed to update A LOT of servers in 2025.2. I did NOT want to update all of these server manually, so I developed a process to semi-automate the process. So, here is my "semi-automated" process.
The original question/request for this is here.
Short answer: YES!
Short answer with a caveat: Yes, but only works with 2025.2
Medium answer: It's kind of automated, but still requires a level of manual intervention either on your part, or by the person who adds the node/server. This process is not super clean (in my opinion, but it made it WAAAAYYY less painful for me.)
Long answer: This might be more then you are looking for, but I think I understand what you are looking for. So, hope this helps!
I have a similar set up in my organization. We run a monthly patching cycle. The patched are applied on Thursday, Friday, Saturday, and Sunday. I have ~800 server in SolarWinds 2025.2. Obviously, I was not going to update all of these by hand.
I'm going to try and recreate this process for you in the order of steps that will give you the highest probability of success.
1. You need to create a Maintenance Schedule in SolarWinds. In 2025.2, you can do that here:

2. Create a new Maintenance Schedule from `Manage Maintenance Schedules`. In my example below, I called my new Schedule `_Test`, since this is just Demo, I told my schedule to MUTE the alerts.

3. Confirm your Maintenance Schedule.

4. You will see your new Maintenance schedule.

With me so far? Awesome! Now, its going to get a little complicated.
5. Install the SWQL studio from here.
6. Connect to your Orion instance. If you have trouble setting up your connection to your Orion server, check the docs from where you downloaded SWQL studio and check your connection string.

7. OPTIONAL STEP: You dont HAVE to do this step, but I'm adding it anyway.
8. Use the below SWQL Query to get the NodeID of a node to test your new Maintenance schedule with.
SELECT NodeID, Caption
FROM Orion.Nodes
WHERE Caption IN (
'Server1',
'Server2',
'Server3'
)
Obviously, replace `Server1, Server2` etc with the name of your Node/Server. You should receive an output like this one:

9. Now, you can run the below Powershell script to perform a mass update across your Servers/Nodes
Obviously, replace `Server1, Server2` etc with the name of your Node/Server.You should get an output like this:9. Now that you know your NodeID'(s), you can use Powershell to perform a MASS update to as many NodeID's as you know. I like to test with Powershell ISE, but you can run with straight Powershell if you want. Use the Powershell script below:
# ========================
# Connect to SolarWinds SWIS
# ========================
Import-Module SwisPowerShell
$hostname = "SERVERNAME" # Put your Orion SERVER name here.
$username = "\" # Put your domain or connection credentials here.
$password = "PasswordGoesHere" # Put your password here. KEEP THE QUOTES.
$swis = Connect-Swis -Hostname $hostname -Username $username -Password $password
# ========================
# CONFIGURATION
# ========================
# Exact name of the schedule in SolarWinds
$scheduleName = "_TEST" # Set the EXACT name of your Maintenance Schedule here.I used _TEST
# List of NodeIDs to assign
$nodeIds = @(123,321) # Update with a single node, or as many nodes as you want.
# ========================
# LOOK UP ScheduleTaskID
# ========================
$scheduleQuery = @"
SELECT ScheduleTaskID
FROM Orion.ScheduleTaskDefinition
WHERE Name = @name
$scheduleId = Get-SwisData $swis $scheduleQuery @{ name = $scheduleName }
if (-not $scheduleId) {
Write-Error "❌ Could not find a schedule named '$scheduleName'"
exit 1
} else {
Write-Host "✅ Found schedule '$scheduleName' with ScheduleTaskID: $scheduleId"
}
# ========================
# ASSIGN Schedule to Nodes (Skip if already assigned)
# ========================
foreach ($nodeId in $nodeIds) {
try {
# Get EntityUri
$uri = Get-SwisData $swis "SELECT Uri FROM Orion.Nodes WHERE NodeID = @id" @{ id = $nodeId }
if (-not $uri) {
Write-Warning "⚠️ Could not find Uri for NodeID $nodeId"
continue
}
# Check for existing assignment
$checkQuery = @"
SELECT TOP 1 EntityAssignmentID
FROM Orion.ScheduleEntityAssignment
WHERE EntityUri = @uri AND ScheduleTaskID = @schedId
$existing = Get-SwisData $swis $checkQuery @{ uri = $uri; schedId = $scheduleId }
if ($existing) {
Write-Host "ℹ️ NodeID $nodeId is already assigned to schedule '$scheduleName', skipping."
continue
}
# Assign schedule
New-SwisObject -SwisConnection $swis `
-EntityType 'Orion.ScheduleEntityAssignment' `
-Properties @{
ScheduleTaskID = $scheduleId
EntityUri = $uri
EntityType = 'Orion.Nodes'
}
Write-Host "✅ Assigned NodeID $nodeId to schedule '$scheduleName'"
} catch {
Write-Warning "❌ Failed to assign NodeID $nodeId $_"
}
}
10. If you have done everything right, you should see the following output in your Powershell window:
"✅ Assigned NodeID 123 to schedule 'TEST'".
11. Now your Schedule should have 1 Node/Server assigned to it.

Hopefully this helps! Feel free to reply to this comment if I can help.