BatchPatch Forums Home › Forums › BatchPatch Support Forum › Feature Suggestion: Job Queue Conditional Statement 2
Tagged: Feature Suggestion
- This topic has 9 replies, 2 voices, and was last updated 2 years, 1 month ago by doug.
- 
		AuthorPosts
- 
		
			
				
September 8, 2023 at 12:32 pm #14102rokinron1ParticipantTrying to re-post Working with Job Queues and was wondering if we could have conditional statements added and a new action added that will “send logged on users a message” If then statements for “Logged on Users” 
 1. In Job Queue, Under the “Special” section below ——–Conditional———– add two (or more) statements that will handle whether a user is logged on.For instance, 
 “If 0 Logged On Users goto label:X”
 “If Any Users Logged On goto label:X”This would also allow for a step following to either terminate the queue or notify the user if a user is logged on, so as to reduce interruption to the end user. 2. A “Send Logged on Users a message” option in the Actions section of the Job Queue So I could have a Job Queue like this: —Job Queue Start—- 
 Label:CheckLoggedonUsers
 Get Logged on Users
 If Any Users Logged On goto label:Send User a Message
 If 0 Logged on Users goto label:Check and install UpdatesLabel:Send Users a Message 
 Send Logged on Users a Message: “Updates are about to be deployed to your machine in X minutes”
 Wait X MinutesLabel: Check and Install Updates 
 Check for Updates
 Download and Install Updates Reboot if Required
 —-Job Queue End —-September 8, 2023 at 1:09 pm #14103dougModeratorThanks. We’ll consider the conditional logged-on users option. In the meantime, there is already the ability to send a custom message to logged-on users from the Job Queue. See lower-left corner ‘Saved User-Defined Commands and Deployments’ grid in the Job Queue window. Any saved ‘Send message to logged-on users’ will appear there. You can already get just about everything you need/want right now by simply skipping the conditional check for logged-on users. Instead just do the following, which satisfies the desire to warn users, and still gets updates installed on machines where no users are logged-on yet: JOB QUEUE: 
 Send message – Updates will be deployed to your machine in X minutes
 Wait X minutes
 Download and Install Updates Reboot if RequiredSeptember 8, 2023 at 1:29 pm #14105rokinron1ParticipantAwesome thanks Doug! I’ll use the suggestions that you have in the meantime! This Job Queue feature is an absolute game changer! I think the only thing I’m not immediately able to do is terminate the job queue based on if a user is logged on. While that could be an option in itself within the job queue “If any users logged on then terminate the job queue” I found that I could do the same thing with a goto label, with a terminate action following. September 8, 2023 at 1:39 pm #14106dougModeratorYou’re welcome. Can you clarify what you’re doing? I’m just curious to understand. Since you can’t currently have the job queue branch based on whether or not there are any logged-on users, why do you need a goto to terminate the queue at all? I mean what is the goto based on? The job queue example that I showed in my previous posting above will terminate after step 3 runs. No need for a goto or a terminate queue step. If you can show me exactly what you’re doing or attempting to do, it will just help me understand your exact needs so that we can make the best decision moving forward about exactly what to add or not add to the various actions/options. Thanks. September 8, 2023 at 2:22 pm #14107rokinron1ParticipantAbsolutely, here is what I’m working on. I’ve italicized the line that I hope the new feature would be, so that I can run the job queue and it will ignore machines that have users logged on and it will highlight the row in Orange so I can circle back. I also have a rudimentary error remediation when the check for updates step fails. I’ve noticed in my environment if the check for updates fails it is because of Error 115 which is because the Opt in to MS hasn’t been run, so I have it loop through the MS Opt in, wait and then go back to check for updates again. Label: Gather Info 
 Set row color: Default
 Start pinging
 If previous action failed/errored (returned non-0). goto label:Error
 Get logged on users
 If Any Logged on Users goto label: UsersLoggedOn (Which ultimately would terminate the queue and change row color to Orange for follow up)
 Get C: disk space
 Get MAC address
 Get last boot time
 Get pending reboot statusLabel: CheckforUpdates 
 Check for available updates
 If previous action failed/errored (returned non-0). goto label:Optin
 If most recent Check for available updates’found 0 updates goto label:Finishing
 Wait for host to have zero logged-on users
 Set row color-16711681
 Download and install updates + reboot if required
 If this step is executed 4 times, terminate queue
 If Get pending reboot status’ returns FALSE, goto label:CheckforUpdates
 Wait 8 minutes
 Wait for host to be detected online
 Get pending reboot status
 Goto label:CheckforUpdatesLabel: Finishing 
 Stop pinging
 Set row color-16711936
 Terminate queueLabel: Opt In 
 Opt-in to Microsoft Update
 If previous action failed/errored (returned non-0). goto label: Error
 Wait 4 minutes
 Goto label :CheckforUpdatesLabel: Error 
 Set row color:-65536
 Terminate queueLabel: UsersLoggedOn 
 Stop pinging
 Set row color: Orange
 Terminate queueSeptember 8, 2023 at 2:29 pm #14108dougModeratorThis looks very good and is helpful to see. Thanks for sharing! FYI this isn’t a big deal but using start and stop pinging in the job queue isn’t really necessary. Pinging will automatically start when BP initiates a reboot, and it will stop when the host comes back online after the reboot. September 8, 2023 at 2:36 pm #14109rokinron1ParticipantI’m wondering if it would be beneficial to have a condition based on row color, so I can do actions based off of colors of the rows that I set. I typically set row color to RED when there is an issue that requires a manual intervention. If row color is Y goto Label:X Where Y is a selectable color from the color palette, or simply the numeral that represents that color. -65536 for Red for instance. September 8, 2023 at 2:40 pm #14110dougModeratorIf you’re using the job queue to set the row color… then wouldn’t you just branch immediately after you set the row color? It would be weird and unnecessary for the queue to set the row color to red and then follow with “if row color is red…” because you already know the row color is red since you just set it that way in the previous step. Maybe I’m misunderstanding. September 8, 2023 at 2:56 pm #14111rokinron1ParticipantYeah you make a great point, there would be no real benefit gained from a condition based on row color because I’d be the one setting the row color during the Job Queue steps. In which case, I’d just do a step after setting it to Red that would branch to other steps. 
 So something like this:If Users Logged on then goto label: UsersLoggedOn Label: UsersLoggedOn 
 Set Row Color: Red
 Goto Label: RemediationLabel: Remediation 
 Wait for Users to be logged off
 Apply whatever remediation needed, (Force user log off?)
 Then Goto Label: Check for UpdatesSeptember 8, 2023 at 3:01 pm #14112dougModeratorYeah that makes more sense 🙂 
- 
		AuthorPosts
- You must be logged in to reply to this topic.
