Jump to content

Mark G38

  • Posts

  • Joined

  • Last visited

Everything posted by Mark G38

  1. 1. You should lower your execution time down to 1 hour. Execution time is like... "How long should this thing try and run before it times out" type of thing. You shouldn't need it to run that long. 2. You are going to need to use the actual exact service name when trying to start the service. The rest looks ok assuming you are monitoring AND set to receive notifications on that service for that particular machine. That's the biggest drawback currently of how the automation works. You must receive a notification for the automation to trigger.
  2. Indeed. Should be happening within the next couple months I'm assuming as it's the #1 feature request according to their upvote system and it says it's currently in development. https://pulseway.featureupvote.com/suggestions/126669/auto-clearing-notifications
  3. @WYE Thanks for the response. I definitely forget about importing them for sure, and this does work/help, but as you mentioned, its definitely a workaround, which is getting tiresome to continue to implement workarounds for things that should definitely be in the UI or possible natively in Pulseway.
  4. Incoming next part. I'm SUPER disappointed at the moment with Pulseway. I spent a good amount of time setting up a way in which I thought I could really get some use out of notifications in Pulseway, all to realize at the moment, it was basically all for naught. I created a deployment script that downloads a custom PS module I put together to all my systems. In turn, I simply import this module at the beginning of every script I write, and it allows me to utilize custom functions that I use often enough to get tired of writing them out each time. Going off this, I created a custom event log which I write output from my scripts to, with their own event sources and Event IDs which mean certain things. Example would be Event ID 5 = Informational, 10 = Informational but Trigger automation (or so I wanted anyway), 15 = Is Error, and 20 = Is Error and Trigger automation off that (again, I wish). I thought this was gonna be a great way to be able to utilize tasks to run checks, pipe out information to the EVLog, and then trigger a notification when needed and a workflow when needed. But alas, Pulseway only let's me choose from Application, Security, System. Why? If I go to Event Log on the device through the Web UI, I can see my custom log and all the events inside. Why doesn't Pulseway either grab more than those logs (perhaps all root level logs) or simply allow you to enter the log name you want to pull from. This can't be a hard change, since the Agent is clearly grabbing this data since it can show it in the Web UI. Please, please, please Pulseway, make this change happen sooner so we can create custom alerts and workflows.
  5. Your first few posts are held and reviewed by a Pulseway staff member before it gets posted to stop forum spam. Once you have a few posts it no longer does that.
  6. Sure, but honestly, I feel like the suggestions that are new and simply don't get a lot of views, never really get considered, which was why I made this thread to begin with, but here it is. https://pulseway.featureupvote.com/suggestions/214566/more-flexible-task-scheduling
  7. Guess I'll continue to edit my original post with new items. I've added this bit under scripting: Tasks - We should have the ability to schedule tasks to run much more frequently that once per day. I would like the ability to run a custom script that checks for something specific let's say, once an hour, which then writes to a custom event log that I then have Pulseway set up to trigger an alert from. This would be helpful in creating plenty of custom alerts based on Event Log errors but once a day is not frequent enough in some cases. Also, in the same vein, workflows should be triggerable off the result of a script. In other words, I shouldn't HAVE to make it an event log entry. It would be great if I could set up a script via a task, and then set a workflow to check results of that script and allow me to choose either to alert or trigger a workflow on either a success of failure, whichever I wanted at that time.
  8. I'm guessing you don't have a domain setup in this environment? If you do, by all means, please utilize a GPO, it's much easier and is the recommended way for something like this. Or even set a login script. However, if these are not options for you, I've written the below you can use. I've tested it a little and it does the trick for all user accounts on a workstation (aside from Public, Administrator, Default). Please note, I don't know anything about your environment or how you envision this going. I assume you want to deploy it via Pulseway. This will force log off any users that are currently logged in, in order to mount their registry hive and set the needed key. Function New-FileDownload { param( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string]$Url, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string]$Destination ) $webClient = New-Object System.Net.WebClient $webClient.DownloadFile($Url, $Destination) if (Test-Path -LiteralPath $Destination) { Write-Verbose "File downloaded Successfully" return $true } else { Write-Verbose "File download Failed" return $false } } $ImageURL = "https://e11onze-public.s3.eu-west-3.amazonaws.com/Assets/Wallpaper_3840x2160.png" $Destination = "$($env:systemdrive)\Users\Public\Pictures\wallpaper.png" $ImageDownload = New-FileDownload -Url $ImageURL -Destination $Destination if ($ImageDownload) { Write-Output "Image downloaded. Continuing..." } else { Write-Output "Failed to download. Exiting." Exit 1 } $Users = (Get-ChildItem "$($env:systemdrive)\users").Name foreach ($User in $Users) { if ($User -eq $env:username) { Set-ItemProperty -Path "Registry::HKEY_CURRENT_USER\Control Panel\Desktop" -Name "Wallpaper" -value "$Destination" } if ($User -eq "Public" -or $User -eq "Administrator" -or $User -eq "Default") { Write-Output "Skipping $User" } else { $Sessions = Query Session $SessionID = $Sessions | Where-Object { $_ -match "$($User)" } if ($SessionID) { $ID = $SessionID.Split(' ', [System.StringSplitOptions]::RemoveEmptyEntries) LogOff $ID[2] Start-Sleep -Seconds 20 } $LoadHive = REG LOAD HKU\temp "$($env:systemdrive)\Users\$user\ntuser.dat" if ($LoadHive -match "successfully") { Set-ItemProperty -Path "Registry::HKEY_USERS\Temp\Control Panel\Desktop" -Name "Wallpaper" -value "$Destination" Write-Output "Image set for $User." [GC]::Collect() [GC]::WaitForPendingFinalizers() $UnloadHive = REG UNLOAD HKU\temp if ($UnloadHive -match "successfully") { Write-Output "Hive unloaded successfully." } else { Write-Output "Failed to unload hive. Exiting." Exit 1 } } else { Write-Output "Failed to load Hive for $User" } } } RUNDLL32.EXE USER32.DLL, UpdatePerUserSystemParameters , 1 , True
  9. I see it. Wish we could do something with those defaults scripts though
  10. Fantastic. Interesting as I didn't see these when I posted as I specifically checked before asking. Although, "What's New" section wasn't updated on my instance yet either at the time I posted, so perhaps I just somehow caught it before the update. Either way, I see both, so thanks!
  11. If you're deploying the agent using a probe from within the Pulseway Web UI, it installs silently without any prompts to the user. You can also reference this thread for silent install arguments among other options. https://forum.pulseway.com/topic/332-unattended-installation-for-msi/
  12. When are these changes coming out? I assume same time as the Group Policy changes?
  13. When are these changes coming out?
  14. Let me start off by saying this is not meant with any kind of hate or ill will. I very much love the Pulseway product overall, and I have been using it for a quite a number of years now. I very much want to see Pulseway continue to improve and catch up to a lot of the other RMMs out there by addressing some obvious "misses" with certain aspects of the software. This is going to be a bit of a novel but I hope the Pulseway staff and the community give it a read and feel free to comment, add suggestions, etc. The below items are too much to put into a bunch of separate feature requests. I apologize in advance if this is too much in one spot Interface/Web UI: Ability to completely remove or hide default scripts. Should also be able to delete individual ones within the default section. Ability to adjust script level permissions. There are some scripts I have written such as an MDM remote wipe type script that I want to be able to access within Pulseway if needed, or one of my higher tiered consultants but not my lower tier. I should be able to assign some sort of permissions to scripts to hide/show them based on security group, level, or team. A full inventory of the machine should be performed by the agent and visible in the web portal. This is a basic function of every other RMM I've used. I should be able to see all services on the machine, just like Pulseway looks at all applications installed. Services should then be selectable to be managed or not, or allow the ability to manage them right from that screen. Windows Updates - We should be able to easily see a list of installed updates on the machine without having to go back through Patch Policy History. The list could easily be populated on the Windows Updates section that Pulseway currently has. Dashboard - Needs more adjustable widgets. Patch status should be available as a dashboard widget with the ability to drill down to site/customer or filter for those things when creating the widget. PowerShell Console - Should be able to press up or some other key to be able to access, select previous inputs from that active session. Scopes - From the Scopes creation page, we should be able to then click on the Scope and see all the machines that the Scope includes. This would be a much easier and faster way then having to go to Systems and then select the Scope and drill down that way. Exclusions - We are unable to create exclusions for alerts. The answer is to move the machine to it's own group, and apply a new policy to that machine. This is certainly not ideal as 1, if you logically group your machines together, then splitting one out is a mess and even more importantly, then more policies created, the more you have to worry about going in and updating them when you want to change 1 thing. The less policies that have to be maintained, the better. Scripting: Input Variables - My single biggest issue with scripting currently is the lack of usability with the current custom input fields. It takes more time to click add/edit and input what is needed into the UI, then it does for me to just declare the same variables at the start of my script when writing them. Have script input variables work as environment variables, and they can be filled in at the time of script run. So if I have script to search for something by date range, I can create 2 input variables, Start & End, and leave them blank. When I got to run the script, it pops up a window with the available custom input variables allowing me to fill them in at that time. Here is an example of a popup window at the time of run for another RMM tool I've used. All these variables are declared in the script as $env:customvariablename, and then inside the RMM portal, at the script creation screen, they are entered in, much like you can with Pulseway, and you can select the type of variable. Variable value, Boolean, selection (dropdown). Whatever is selected/inputted at the time of ran is simply passed to the $env:customvariablename that corresponds to that input variable. I've shown the 3 areas of how this works to show the complete idea behind this in the attachments. Site Variables - Pretty much the same concept as above, except these are created at the site (customer) level instead of the script level. They are called in the same fashion as above. This would allow for much greater flexibly around scripting as many clients have license specific software that needs to be installed and being able to set a site(customer) level variable that gets pulled automatically when the script runs, would allow for 1 script to be made and ran across multiple clients at a time without having to edit the script or make copies with the unique license key for each. It would simply read from the site variable when running and insert whatever is in that site variable field. Output of scripts (the content) in the push notification or email alert. If I schedule a task to run on a recurring basis and I get a failure notification, being able to see why is incredible helpful. Or, even if it's a success, there are plenty of use cases why seeing the output is needed. If I'm running a script to collect xyz info across multiple systems, being able to easily see that in a central spot on the notification or email is imperative. I shouldn't have to log into Pulseway and check each machine or check the task and look through the report. Tasks - We should have the ability to schedule tasks to run much more frequently that once per day. I would like the ability to run a custom script that checks for something specific let's say, once an hour, which then writes to a custom event log that I then have Pulseway set up to trigger an alert from. This would be helpful in creating plenty of custom alerts based on Event Log errors but once a day is not frequent enough in some cases. The ability to select multiple machines and run a script against them on the fly without having to tag them or create a scope and run a task. When a task is completed and you are viewing the results, it would be awesome if you could click the machine and go right to it from there. It's a little cumbersome to be viewing the results of a task, specifically looking at ones that failed, and then having to click out of the report and go drill down to each failed machine. Workflows As I understand it, the entire workflow idea works around something that generates a notification. This creates a big issue with workflows in the sense that, we are limited to whatever Pulseway deems an acceptable "condition" or filter. What would make workflows amazing, would be essentially turning them into "custom monitors". What I mean by that is I create a script that let's say reads some random programs event log because my customer needs to know when this particular software generates a specific error, (and no, it doesn't write this error to any event log). There is no built in way to approach this with Pulseway. If I could simply create a workflow and choose to run a script as the initial item, and then based on the exit code of that script, do other things from run a script to fix, generate an alert to my team so someone can go in and look at what is causing the error and resolve it, etc. I could apply that workflow to any systems I wanted, and set it to run every 10 minutes, an hour, whatever, and when it detects the event, again, based on how the script was written, it triggers the workflow or the alert. As in the example above, if I set it to run every 30 minutes and look for "if error exists", if it does, it then creates an alert so that myself and my team get notified. But it would also allow the workflow to perform additional steps as remediation if desired. Another useful example of what I'm trying to explain, is perhaps I want to perform a certain set of steps based on a tag setup in Pulseway. I should be able to set up a workflow against a tag or against a scope and set it to run every so often. When a machine is then given that "tag" the workflow triggers and performs the steps assigned. This goes along with 4 under scripting. In the same vein, workflows should be triggerable off the result of a script. In other words, I shouldn't HAVE to make it an event log entry. It would be great if I could set up a script via a task, and then set a workflow to check results of that script and allow me to choose either to alert or trigger a workflow on either a success of failure, whichever I wanted at that time. Cloud Backup: I would LOVE to use Pulseway's built in cloud backup, but there are just too many flaws / missing items in it currently. Scheduling - The only current options are every day, every 2, or every 3 days. All backup solutions I've ever seen, give you the ability to select which day(s) you want the backup to run, be it every Monday, or any multiple combination of days. We should also have the ability to select the TIME the backup will take place. Right now, it uses the time the backup job was created, so if I want a job to happen at 2 AM, I have to stay up until 2 AM to schedule that job for the first time. This is a very shocking miss on the backup front. Ability to exclude certain file types (by extension) is needed. Notification on job success or job failure is a MUST, not how it current is where it notifies you once it reaches below a targeted % range. The ability to see the used space. Since your cloud backup works off either 500GB or 1TB licenses, we need to be able to see how much space is current in use per machine so we can plan to take the needed action should the backups start approaching the limit. A report on the files backed up. Since this is a file only backup type, it's imperative to be able to see a list of all files backed up during the job, and if they were successful, failed, or skipped. The ability to specify if the backup is considered a failure based on % of failed or skipped files is also needed. For example, if I'm targeting 1000 files, perhaps 5 failed isn't a concern to me, but if 300 fail, that's a failed backup job IMO. Therefore, having the ability to say if 10% (or whatever amount I want) of files fail to backup, the job is considered failed. In general, during my demo of this, I've had some concerns which your staff did witness directly: The next backup date seems to fluctuate between the current day and next day if you sit that the backup status screen of Pulseway. The initial dig into a backup job, showed folders that I had excluded, were still present and you could drill down. However, after mounting a recovery to explore, the interface then hid all the folders not backed up. Concerning if it's collecting any data from folders I specifically didn't include in the target paths. You can see from the image below, it backed up 2 days in a row, almost the exact same amount of files and used the same amount of space. This is a test VM which had no changes in the test target directories, and yet the 2nd day it did what appears to be a full backup again. Subsequent days seem to have improved and the file count went down to a more expected level. Here are some feature requests I submitted around some of the points above: https://pulseway.featureupvote.com/suggestions/189283/more-robust-input-and-site-variables https://pulseway.featureupvote.com/suggestions/189917/patch-status-dashboard-widget https://pulseway.featureupvote.com/suggestions/214566/more-flexible-task-scheduling https://pulseway.featureupvote.com/suggestions/217128/exclusions https://pulseway.featureupvote.com/suggestions/202867/attach-files-to-scripts https://pulseway.featureupvote.com/suggestions/202092/monitor-services-through-portal https://pulseway.featureupvote.com/suggestions/203512/system-type-as-workflow-condition
  15. Apologies. Don't use the one above. It DOES work, however, I realized I posted my original version which I realized not long after creating it that if you run it against a machine that already had it ran before, depending on what it's set to, it won't adjust it correctly. Please use this instead. I've actually modified this one to look at both x86 and x64 registry paths, as well as being able to enter multiple apps you may want to hide from your users. I've left mine in as examples. This will loop through both registry paths, and if the app exists there, will check for SystemComponent and add or modify as necessary. Let me know if you have any trouble with it. $ErrorActionPreference = "SilentlyContinue" $RegPaths = @( "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*", "HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" ) $AppsToHide = @( "Pulseway", "Splashtop Streamer", "Splashtop Software Updater" ) foreach ($App in $AppsToHide) { foreach ($Path in $RegPaths) { $AppKey = (Get-ItemProperty $Path | Where-Object { $_.DisplayName -eq $($App) }).PSPath if ($null -ne $AppKey) { $SystemComponent = Get-ItemProperty $AppKey -Name SystemComponent if (!($SystemComponent)) { Write-Output "$($App) SystemComponent key not found. Adding..." New-ItemProperty "$AppKey" -Name "SystemComponent" -Value 1 -PropertyType DWord } else { $SystemComponentValue = (Get-ItemProperty $AppKey -Name SystemComponent).SystemComponent if ($SystemComponentValue -eq 0) { Write-Output "$($App) key value currently 0. Setting value to 1." Set-ItemProperty "$AppKey" -Name "SystemComponent" -Value 1 } if ($SystemComponentValue -eq 1) { Write-Output "$($App) key value already set to 1." } } } else { Write-Output "$($App) not found in $($Path)" } } }
  16. Edited because I'm silly and posted my old version. Please see the updated and correct one below.
  17. @AC_Martin_J I completely agree with your points. Especially being able to right click the tray icon much like "get support" if they could be taken to the client portal. Unfortunately, seems as Pulseway wants to use the CP as a means to collect more money which I mean, I get it, everyone has to make their money but perhaps if it was more flexible I could see a cost, but currently it's very limited.
  18. I have an "onboarding" workflow set up that runs when a new machine is registered. It determines if it's a workstation or server and then runs quite a number of custom scripts I created from installing some default software that I always deploy to my clients, such as additional remote access tool, Endpoint Protection as well as a few other installs. It also runs a few scripts that set certain aspects of the machines environment as well as filling in some custom fields I have in my portal that I use for additional data collection from devices. The client portal I've started to use more but it's admittedly limited. However, 2 such use cases I use it for are.. 1. A customer purchases a new machine themselves and want me to manage it. I let them log into the portal which displays a link to their client specific Pulseway installer. They install it, then my onboarding workflow does the rest. 2. Some of my clients have specific software applications that very infuriatingly have "known" issues that the software vendor refuses to currently fix, like a piece of the software disappearing off the screen and the "fix" is modifying some registry keys and a couple files. I have a troubleshooter that lets the user having the issue run the script I wrote to auto fix the reg keys and files instead of having to rely on reaching out for help and waiting on a response.
  19. It was requested I post this so hopefully someone else in the community can benefit. Until we are able to deploy Bitdefender from within Pulseway, this is the next best thing. I wrote this again, for my clientele who generally are PS 3.0 + so some small adjustments may be needed if you are attempting to run this on PS 2.0. This will download and silently install Bitdefender. All you need to edit is the $BitdefenderURL and possibly the $BaseURL depending. When you log into GravityZone and make a package and go to get install links, the base URL in your portal will always be the same followed by the remaining part of the URL which can change based on the package. If you just make 1 generic one and then move the machines after install, you will only need to edit this once. I've left my base URL in the script so you can see that part and the beginning of the unique part so you can easily know what to change. Function New-FileDownload { param( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string]$Url, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string]$Destination ) $webClient = New-Object System.Net.WebClient $webClient.DownloadFile($Url, $Destination) if (Test-Path -LiteralPath $Destination) { Write-Verbose "File downloaded Successfully" return $true } else { Write-Verbose "File download Failed" return $false } } $Installed = Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" | Where-Object { $_.DisplayName -eq "Bitdefender Endpoint Security Tools" } if ($Installed) { Write-Output "Bitdefender already installed. Exiting." Exit 1 } $BitdefenderURL = "setupdownloader_thisistheuniquepart.exe" Write-Output "Beginning download of Bitdefender..." $BaseURL = "https://cloud.gravityzone.bitdefender.com/Packages/BSTWIN/0/" $URL = $BaseURL + $BitdefenderURL $Destination = "$($env:TEMP)\$($BitdefenderURL)" $FileDownload = New-FileDownload -Url $URL -Destination $Destination if ($FileDownload) { Write-Output "Download succeeded, beginning install..." Start-Process $Destination -ArgumentList "/bdparams /silent silent" -Wait -NoNewWindow Start-Sleep -Seconds 30 } else { Write-Output "File failed to download. Exiting." Exit 1 } $Installed = Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" | Where-Object { $_.DisplayName -eq "Bitdefender Endpoint Security Tools" } if ($Installed) { Write-Output "Bitdefender successfully installed." Exit 0 } else { Write-Output "ERROR: Failed to install Bitdefender" Exit 1 }
  20. There are a couple of things you can do here. 1. Don't give regular users Admin rights on a machine. Of course this may not be a viable option for many businesses/end users. 2. Delete the reg key associated with the program displaying in Add/Remove Programs. 3. This is my preferred method of choice: Add a new reg key called "SystemComponent" with a dword value of 1 to HKLK:\Software\Microsoft\Windows\CurrentVersion\Uninstall\{3AB4D18D-98B3-41EF-94EA-DA587F282BB1} (or whatever key your Pulseway is in for that last part). This will hide it from Add/Remove Programs. So unless the user is more advanced or really determined to find it and remove it, this should stop most normal end users. Value of 0 makes it appear again. Very easy to just deploy via script to all machines Pulseway is on. I do think that Pulseway should provide an option to password protect the uninstall, but this was brought up years ago and hasn't been provided, so I don't think they plan on it any time soon.
  21. You guys are gonna get tired of all the feature requests I'm submitting, but sure, submitted that one too. :-)
  22. There doesn't appear to be a way to select the system type as a condition. Example if creating a workflow that once a system is registered, depending on if it's a server or workstation, do xxx. Right now, (I'm still testing it) I have set up 2 tags called Servers and one called Workstations. I used the Pulseway built in System type and added "Workstation" as the type for the scope. I'll then use that scope for the workflow, though I'm not sure it will use it properly. If it doesn't, I have a script ready to go to do the condition and read off that. Anyway, system type should be a selectable condition so that the above workarounds don't have to be done.
  23. This would certainly be useful for the exact reasons mentioned above. If I have a quick script I just want to run against a few machines, having to tag them, scope them, create a task is a lot of work.
  24. When you create a patch policy, just set it to Weekly, and then choose your days. You can select more than one to repeat on. So choose Saturday/Sunday.
  25. Can you attach the error log and what "error code" you need it to look for? Also what service does it need to restart?
  • Create New...