Category: Work

  • Expertise Is No Guarantee

    In June of last year I threw together a monitoring solution for a very weird problem. This afternoon I fixed a glaring hole in my solution which prevented the value comparison script from ever, ever working properly.

    The problem: Agents (managed computers) are wandering from client to client in ConnectWise Automate. Techs claim not to be moving agents around, and I believe them because this isn’t the sort of thing you can “oops!” and screw up with one wrong mouse click. It takes deliberate effort… and none of us are that bored. This might be merely a nuisance except that it’s also causing billing errors, with clients looking at their detailed invoice and asking, “What’s ComputerXYZ doing here? That’s not mine!”

    The solution: A new custom data field on each computer logging the current Location identification number of that computer, populated initially by a one-time script. Every Client (customer) in the system contains one or more Locations (organizational units). Locations have display names but also identification numbers, which is good because most clients’ Locations are some variant of “Main Office.” Every night, a script runs which compares the computer’s current Location ID to the one “on file,” and emails me if there’s a discrepancy.

    Easy peasy. It took me all of maybe 90 minutes to throw this together. And yet. It didn’t work, because I overlooked a value field in an “IF” check in the comparison script.

    The lesson, here? Test everything, even if you’re doing something you’ve done dozens of times before, even if you think “I can do this in my sleep.” Had I checked the results just a bit more thoroughly after the solution went “live” I’d have caught the problem. Instead, I found out after months of frustration, wondering why the monitoring hadn’t ever caught anything. (And the “anything” is still definitely happening so it should have been caught!)

  • What Percent Complete?

    I cannot believe, some days, that we as a society have allowed Microsoft to get away with this for years upon years without rising up, grabbing torches & pitchforks, and marching upon Redmond Washington in pure rage.

    “This”? This:

    This image courtesy of the [cuss]ing piece of [cuss] server that we’ve spent the last few working days trying to get to perform reasonably again after it went haywire starting last month.

    One hundred percent complete means it’s done. It most assuredly does not mean “now wait for another two, ten, or up to thirty more minutes.” Except to Microsoft, obviously.

  • Changing How I Note The Time

    When I started with my current employer, lo the many years ago, I started taking notes in text files. One text file per day, every single day. I have (nearly) all of them, just in case I need to refer back to something I did [mumble] years ago. It happens!

    It’s not a bad system, obviously, since it’s served me well. Text files are easy for the computer to index for searching, to name one useful feature.

    I manually created a new file every day, and at the end of every month (and every year) I moved the previous month’s/year’s text files into an archive folder. Also, I pressed Ctrl+S a lot to make sure I didn’t lose information as I go. The “ongoing notes” and “to do list” sections I maintained at the bottom of the file needed copying over to each new document every morning.

    At home (as it were) I’ve been using Obsidian, the notes tool which saves everything as a discrete Markdown file in its library structure, for all of my personal notes for a few months now. A Markdown file is just a text file with simple formatting markers that reads like plain text in Notepad++ but does fancier things in a product like, well, Obsidian (and others).

    So at the start of 2024 I made the change: A new Obsidian vault in my “work” document folder, complete with automatic creation of the new day’s time file every day, already placed into a year-and-month folder structure. The carry-over notes and to-do list are separate documents “outside” the day/month/year structure but still in the vault. And since Obsidian saves changes as you go, I spend a lot less time hitting Ctrl+S. (Or, I will, once I break the habit…)

    If you surround some text with a pair of equals signs on each side, you get a “highlight” effect. Handy, since I like to flag which time blocks I’ve entered in the ticketing system.

    Was this really worth it? Who knows? Who cares! It feels like an improvement, and “a change is as good as a rest.”

  • Winter Staycation 2023

    I was going to take a few days off and my boss asked, “Why don’t you make it a week?” So now I shall attempt to enjoy my time away from the office… virtually speaking, since I actually live in my actual physical office (my bedroom).

    And try not to stress about all the work waiting for me when I get back, since my boss decided to give me a by-year’s-end project knowing full well I will be losing 1/4 of the month to get it done in by being on the vacation my boss insisted on to begin with.

    Dunno what I’m going to do or where (more like “if”) I’m going to go, but I’ll do my best to rest and revitalize. Hey, it could work. Maybe.

  • Your Bitness Is Insufficient

    I spent part of the workday making a script to perform two tasks on all machines at a particular client site:

    1. Remove a specific named user from the local “Administrators” group on a PC.
    2. Remove that user from the PC entirely.

    Since I’ve been moving toward using PowerShell rather than various (potentially abandonware) utilities for handling command-line scripted jobs, I looked into if there were simple commands to perform those two tasks. Good news! Remove-LocalGroupMember and Remove-LocalUser exist!

    The bad news? Microsoft’s documentation for both of those “cmdlets” stresses the fact that if you are on a 64-bit version of Windows and you try to use them in a 32-bit console, those cmdlets aren’t available at all.

    Guess whose RMM system hasn’t yet gotten around to making 64-bit agent software? Surprise, that’d be ConnectWise’s “Automate” product. What does this mean? It means that the Automate agent’s “commands” are sent to a 32-bit console. Exactly what I don’t want.

    Not to worry, however: With some testing I found that I can invoke PowerShell 7 (which lives separately from the “native” installed PowerShell) via the remote agent and those cmdlets are available! A heck of a workaround, but I’ll take what I can get. On the downside, the client for whom I needed this script didn’t yet have PowerShell 7 installed, not on any of their machines. This led to some time spent figuring out a fix for the PS7 installers not downloading reliably from our S3-compatible bucket. (Oh hey, Github links direct to the PS7 MSIs, thanks for existing.)

    So… with PS7 deployed to the client’s machines (after I updated some automation to make sure all clients’ machines will get the PS7 product and/or update) I successfully ran my new script to eradicate the unwanted user account. A day well spent.

  • Workflow Wut

    We had a weird problem with one ticket that wouldn’t stay closed.

    Yes, this is about the ticketing system workflow shenanigans I wrote about a couple of times earlier this month. Yes, there were more shenanigans.

    (more…)