[{"content":"What is PSWindowsUpdate? PSWindowsUpdate is an awesome PowerShell module that I have been using quite frequently to troubleshoot issues on devices without interupting the user behind them. Also I have used this to speed up the process of getting a new device, new VM, or recently imaged machine up-to-date. In this blog post, I will walk through installing the module, using it, and leveraging it different use cases.\nPSWindowsUpdate is created and maintained by Michal Gajda and published on the PSGallery, making it extremely easy to install.\nInstalling the Module You can install PSWindowsUpdate from the PSGallery by running the following commands in an elevated PowerShell instance.\nInstall-Module PSWindowsUpdate Import-Module PSWindowsUpdate Note\nMake sure the account you are running PowerShell from is in the \u0026ldquo;Administrators\u0026rdquo; group on the device. You can also simply run the PowerShell instance as an administrator and enter credentials for an account that is an \u0026ldquo;Administrator\u0026rdquo;. View Available Cmdlets After importing the module, the following cmdlets become available to you: Get-Command run against the module, then sorting by name\nBasic Usage Below, I will show some basic usage of the module and how you can leverage it to complete Windows Updates at a much quicker pace than the GUI allows. The examples shown below are all running on my Windows 11 Pro Parallels Desktop. I daily drive a Macbook Pro for personal use and employ Parallels to host Windows OS.\nChecking for Available Updates Running the Get-WindowsUpdate cmdlet will output which updates are available for the system. Note\nMany of these cmdlets can be used against a remote computer by using the -ComputerName parameter. Installing Updates Running the Install-WindowsUpdate cmdlet will install any updates found and output progress during installation. I would suggest using the -AcceptAll parameter to avoid having to confirm each update manually.\nNote\nIf any of the updates require a reboot of your device, you will be prompted. You can enter Y for reboot now or press enter to accept the default of No. I highly suggest rebooting then and there if prompted. Check Update History One of the great benefits of this module is the ability to view the history of all installed Windows Updates easily. This also allows you to easily target the uninstallation of a specific KB; we will get into that shortly.\nRunning the Get-WUHistory cmdlet will output all of the installed updates on the computer. You can use the -Last parameter to limit the number of results returned. To show you this, below you will see all of the installed updates on the computer.\nNow, as you\u0026rsquo;ll see, I attach the -Last parameter to the command, specifically -Last 3. This produces the last 3 updates installed on the computer.\nTo see even more information on the specific update details, (which can be very helpful for our next step) pipe the output into Format-List, like so.\nInstalling or Uninstalling Specific Updates As seen in the last command we ran, we can easily find the specific KB Article ID. We can use those IDs to target the update associated with them and either install or uninstall.\nInstalling Specific Updates Run the Install-WindowsUpdate cmdlet with the -KBArticleID parameter, followed by the KB Article ID. Below you will see me run Get-WindowsUpdate to see what is available, then target that KB to install KB2267602.\nUninstalling Specific Updates Run the Uninstall-WindowsUpdate cmdlet with the -KBArticleID parameter, followed by the KB Article ID. Below you will see me run the Get-WUHistory cmdlet to see what updates have been installed, then target that KB to uninstall KB2267602.\nWarning\nIt is very common that this will fail (like mine above) due to many Windows Updates not being available for uninstallation. Especially as Microsoft has pushed more cumulative updates it has become more dangerous to uninstall them. Thus, Microsoft only offers uninstalls on specific KB\u0026rsquo;s. Still, it is worth a try if you believe a recent update has caused abnormalities or issues. Wrapping Up One of the parameters I did not mention above that I use all of the time is the -IgnoreReboot parameter. I usually include this parameter alongside Install-WindowsUpdate -AcceptAll when troubleshooting a device in shich I do not want to interupt the user. The -IgnoreReboot parameter tells the module to NOT reboot the computer once the updates have finished installing. I then normally schedule the reboot later that night, once the user has left, or tell the user to reboot at their earliest convenience.\nSo, the full command I commonly use to troubleshoot computers with active users is:\nInstall-WindowsUpdate -AcceptAll -IgnoreReboot Of course, the user\u0026rsquo;s computer must have the PSWindowsUpdate PowerShell Module installed, but again this is easily done remotely without disturbing them via Remote PowerShell or an RMM tool.\nThere you go! You now have the capabilities to use the PSWindowsUpdate module! There are so many ways this module can be used to your advantage, including scheduling updates via command line, installing/uninstalling specific KBs, mass updating remotely, the list goes on and on. This guide should give you the base understanding of the module to then get creative in your environment.\nIf you would like some more advanced details on the module here are some great resources:\nAskMe4Tech WindowsOSHub Happy Scripting :) ","permalink":"https://ljohnson-adm.com/posts/pswindowsupdate-module/","summary":"How to install, use, and automate Windows updates via PowerShell using the PSWindowsUpdate module — no GUI required.","title":"Managing Windows Updates with PSWindowsUpdate"},{"content":"I\u0026rsquo;ve spent a long time fixing things, configuring things, and explaining things to clients, and almost none of that work has ever existed anywhere outside a ticket system or an e-mail chain. Solve a tricky Exchange on-prem routing issue once, and there\u0026rsquo;s a real chance I\u0026rsquo;ll solve a slightly different version of the same problem eight months later, having fully forgotten the first time.\nThat\u0026rsquo;s reason one for this blog. It\u0026rsquo;s documentation for myself as much as anyone else.\nThe Documentation Problem Every sysadmin has a version of this story: a problem gets solved under pressure, the fix works, and the actual reasoning behind it evaporates the moment the ticket closes. Six months later, something similar breaks, and there\u0026rsquo;s a faint, frustrating memory of having dealt with this exact flavor of weird before, with none of the useful detail attached.\nWriting things down properly, not just \u0026ldquo;did this, fixed it.\u0026rdquo; but why it broke and why the fix worked, is the actual skill. This site is partly just me forcing myself to practice that skill consistently instead of only when a client\u0026rsquo;s paying for it.\nThe Portfolio Problem A resume is a list of claims. \u0026ldquo;Experienced with Azure, Fortinet, CMMC compliance\u0026rdquo; doesn\u0026rsquo;t show anyone how I actually think through a problem, what my troubleshooting process looks like, or what I do when the documentation doesn\u0026rsquo;t cover the situation in front of me.\nA detailed, honest breakdown of a real project does that. So this is also, unapologetically, a portfolio, built the way I\u0026rsquo;d want to evaluate someone else\u0026rsquo;s work if I were hiring.\nBuilding Something From Scratch This blog itself is the first project worth writing about. A Debian VPS, Hugo, Caddy, hand-rolled styling, a custom logo, and a command-palette search feature I had no strict need to build, except that it seemed like a genuinely good way to learn something new.\nThe build that kicked this whole thing off.\nThere were a handful of real mistakes along the way, an SSH key typo, a permissions issue that 403\u0026rsquo;d the whole site, a placeholder domain that quietly redirected visitors somewhere else entirely. I\u0026rsquo;m planning to write about those too, since the failures are usually more instructive than the parts that worked on the first try.\nWhat You\u0026rsquo;ll Find Here Going forward, expect a mix of:\nHomelab projects — Proxmox, Docker, Kubernetes, DevOps, Networking, self-hosted services, and the inevitable troubleshooting that comes with running your own infrastructure Microsoft 365 \u0026amp; Azure deep-dives — the kind of tenant-level weirdness that doesn\u0026rsquo;t show up in the official docs Networking notes — Fortinet, Cisco, and whatever firewall is causing problems that week CMMC \u0026amp; NIST compliance — making sense of frameworks that drive our industry forward (sometimes backwards) Whatever else crosses my desk and seems worth writing down properly If any of it saves you a few hours of troubleshooting, that\u0026rsquo;s a bonus. Mostly, I\u0026rsquo;m just here to write about the things I love and keep better notes than I have been.\n","permalink":"https://ljohnson-adm.com/posts/why-im-building-this/","summary":"On documentation, portfolios, and why this site exists in the first place.","title":"Why I'm Building This"},{"content":"Full write-up coming soon.\n","permalink":"https://ljohnson-adm.com/projects/homelab-docker-host/","summary":"Dedicated Docker host on Proxmox VE running Nextcloud, Paperless-ngx, and Audiobookshelf, proxied through a single Cloudflare Tunnel.","title":"Homelab Docker Host"},{"content":"I\u0026rsquo;m Landon, a Systems Administrator and Engineer who spends most of my time keeping infrastructure running, secure, and well-documented, and the rest of it tinkering with technology nobody\u0026rsquo;s paying me to touch\u0026hellip; just pure love of the game.\nWhat I Do My day-to-day work spans a pretty wide range of the stack:\nWindows Server \u0026amp; Active Directory — design, migrations, and the occasional 2am recovery Linux administration — Debian, SLES, RHEL, and Ubuntu, mostly, across bare metal, VMs, and containers Microsoft 365 \u0026amp; Exchange Online — tenant management, mail flow, licensing Azure \u0026amp; Entra ID — identity, access, and the steady creep toward Zero Trust Networking — Fortinet, Cisco, WatchGuard, Palo Alto, and Aruba, depending on the client CMMC \u0026amp; NIST compliance — the kind of work that makes you appreciate good documentation Homelab \u0026amp; open source — Proxmox, Docker, Kubernetes, self-hosted everything How I Got Here I started where a lot of people in this field start: helpdesk, fielding password resets and \u0026ldquo;my mouse isn\u0026rsquo;t working\u0026rdquo; tickets. That didn\u0026rsquo;t last long. I moved into an MSP environment that was, charitably, a sink-or-swim kind of place, the fastest way to become a jack-of-all-trades systems engineer is to get handed a problem you\u0026rsquo;ve never seen before and told to figure it out before the client notices it broke. I learned more in those first couple of years than I would have in a much slower, more structured environment. Although it feels as if I aged 10 years for every 1 human year at that job, I honestly think the best place to start in IT is at a small to medium sized MSP. There is nothing like learning to thrive in the absolute chaos and unstoppable wave of tickets. You will learn more working at an MSP than you will in a combined 3 years doing internal IT.\nFrom there I made my way into internal IT, including a stretch in aerospace manufacturing, an environment with its own particular flavor of constraints: legacy systems you can\u0026rsquo;t just swap out, security requirements that come with the territory, and zero tolerance for unplanned downtime on a production floor. These days I\u0026rsquo;m part of a great IT Team for a fabrication company, doing similar work, keeping the infrastructure running that keeps production running and helping our user base do the great work they love.\nWhy This Site Exists I write a lot of internal documentation that nobody outside a ticket system ever sees. This is where the more interesting parts of that work get a second life, project breakdowns, troubleshooting notes, and the occasional strong opinion about how infrastructure should be built. I wrote more about the reasoning in my first post, if you\u0026rsquo;re curious.\nGood documentation is just a kindness you do for your future self, who will, with total certainty, have forgotten everything by the time it matters again.\nIf you\u0026rsquo;re working through something similar to what\u0026rsquo;s written about here, I hope it saves you some time.\n","permalink":"https://ljohnson-adm.com/about/","summary":"\u003cp\u003eI\u0026rsquo;m Landon, a Systems Administrator and Engineer who spends most of my time keeping\ninfrastructure running, secure, and well-documented, and the rest of it tinkering with\ntechnology nobody\u0026rsquo;s paying me to touch\u0026hellip; just pure love of \u003cem\u003ethe game\u003c/em\u003e.\u003c/p\u003e\n\u003ch2 id=\"what-i-do\"\u003eWhat I Do\u003c/h2\u003e\n\u003cp\u003eMy day-to-day work spans a pretty wide range of the stack:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eWindows Server \u0026amp; Active Directory\u003c/strong\u003e — design, migrations, and the occasional 2am recovery\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLinux administration\u003c/strong\u003e — Debian, SLES, RHEL, and Ubuntu, mostly, across bare metal, VMs, and containers\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMicrosoft 365 \u0026amp; Exchange Online\u003c/strong\u003e — tenant management, mail flow, licensing\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAzure \u0026amp; Entra ID\u003c/strong\u003e — identity, access, and the steady creep toward Zero Trust\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNetworking\u003c/strong\u003e — Fortinet, Cisco, WatchGuard, Palo Alto, and Aruba, depending on the client\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCMMC \u0026amp; NIST compliance\u003c/strong\u003e — the kind of work that makes you appreciate good documentation\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHomelab \u0026amp; open source\u003c/strong\u003e — Proxmox, Docker, Kubernetes, self-hosted everything\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"how-i-got-here\"\u003eHow I Got Here\u003c/h2\u003e\n\u003cp\u003eI started where a lot of people in this field start: helpdesk, fielding password\nresets and \u0026ldquo;my mouse isn\u0026rsquo;t working\u0026rdquo; tickets. That didn\u0026rsquo;t last long. I moved into an\nMSP environment that was, charitably, a sink-or-swim kind of place, the fastest way to\nbecome a jack-of-all-trades systems engineer is to get handed a problem you\u0026rsquo;ve never\nseen before and told to figure it out before the client notices it broke. I learned\nmore in those first couple of years than I would have in a much slower, more\nstructured environment. Although it feels as if I aged 10 years for every 1 human year at\nthat job, I honestly think the best place to start in IT is at a small to medium sized MSP.\nThere is nothing like learning to thrive in the absolute \u003cstrong\u003echaos\u003c/strong\u003e and \u003cstrong\u003eunstoppable wave of tickets.\u003c/strong\u003e\nYou will learn more working at an MSP than you will in a combined 3 years doing internal IT.\u003c/p\u003e","title":"About"}]