Tuesday, September 22, 2026

Fix a windows network printer that is offline

How to fix a network printer that get's installed and shows offline.

By default SNMP is set to public, so when you are installing a network printer; you need to ensure you have all the information about the printer.  If you don't configure the SNMP of your print driver to the same as the printer it installs but shows up offline.  It also takes forever to install.

There are two ways to approach a resolution to this problem.  Install the driver then change the SNMP in the driver or setup the port and add the printer.  In my case I added the printer first so then I'm going to update the port.








Get the properties of the printer you want to edit in my case the 2525AC and go to ports select the port in use and configure port


Change the SNMP Status from public to what it you need it to be


Hit OK and close the printer properties.  It will take a few seconds but then the printer status will change from offline to ready.




Tuesday, August 25, 2026

Removing Show Recent History and Recently Open Documents from Windows Explorer

How to remove the Recent History and Recently Open Documents from Windows Explorer Using the Registry Editor

Press the Windows Key + R, type regedit, and hit Enter.

Go to HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer on the left panel.

Look for the ShowRecent DWORD value on the right panel, or create it if it is missing by right-clicking, choosing New > DWORD (32-bit) Value, and naming it ShowRecent.

Double-click ShowRecent and change its value data to 0 to disable/remove the recent history, or 1 to enable it.

Then go to  

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced and change Start_TrackDocs to 0 to stop tracking recent documents.

Restart File Explorer or sign out and back into your account for the changes to work.
The end result looks like this

Thursday, July 23, 2026

Crontab changes in Linux 26.04 vs previous versions

I use a small Linux server to control the turning on and shutting off our client stations with crontab.  The system I typically use is Ubuntu Server running on Hyper-V, I setup the server, enable WOL to turn them on and NET RPC to shut them down. I have been doing this since ubuntu 12.04.  and this is the first time where I've had to reconfigure my scripts to make it work.

Here is a sample of the crontab on versions of Ubuntu Linux (before 26.04)

00 21 * * 1-4 $USER    $PATH/$Script.sh

My crontab is setup so at 9:00 pm on Monday though Thursday the script "$Script.sh" is run as $User that is located located at $PATH 

However in Ubuntu 26 it throws an error when running the script as the $USER, so once I removed the user from the crontab now looks like this.

00 21 * * 1-4 $PATH/$SCRIPT.sh

Terminal of Cron throwing an error


Created a log file to catch the error.  Add >> /$PATH/$LOGFILE.log to crontab


After looking at the log it is erroring out on the user?

Once the error is resolved


After troubleshooting and finding out that the user in the crontab was causing the error; I removed the user and crontab started running the scripts.  I was able to acknowledge that the script was running as the log filled up with the commands.  I was going though documentation for Ubuntu 26.04 and I either missed or I can't find the changes made in crontab.  It is interesting the little changes that though such a big monkey wrench into a system that really hasn't changed for years.  At any rate the issue has been resolved and the system is running the scripts as expected.

Thursday, May 07, 2026

Fixing error 401 Unauthorized IP: $IPADRESS when running apt-get on Linux

 I have a very dated VM that works as a mail forwarder for my organization, it is a Ubuntu Server VM running 20.04 LTS which connects to google workspaces and sends email for our on prem devices such as copiers, software, scripts, etc.  I went to run some security updates using apt-get and I got an interesting error saying that there is a 401 Error Unauthorized IP.


The fix is to disable the sources in the sources.list directory, which I have two files.

  • ubuntu-esm-infra.list
  • ubuntu-esm-infra.list.distUpgrade


In VI I commented out the source lines.


reinstalled apt


After I was able to update the system; and upgrade the outdated packages.  Now I can go headed and upgrade the system to the newer release.



Tuesday, April 28, 2026

StorageSpaces replace a drive using the serial number

Backup Your Data (Crucial!): Before anything else, ensure you have a current backup of your data, as drive failures can be unpredictable

Identify the Failing Disk: Use the Storage Spaces Management tool (or PowerShell) to identify the specific physical disk that is unhealthy.  This will also show up in the Physical Disks Section in storage on windows server.



If you can't or are unable to identify the disk in software, you may have to if possible shut the system down and find the drive.  Mark and label the drives that need to be replaced; you can do that by finding the serial number of the drive that failed as down below.

Use the following command to get the status of your storage spaces; note any drives that are failing by serial number.

Get-StoragePool -FriendlyName "Data" | Get-PhysicalDisk


We can get the serial numbers of the disks we want to replace we can't use the FriendlyName due to both disks having the same friendly name.  The disks we want to replace are

Disk 1 - W381A7X4

Disk 2 - W391A8Z8

Get-PhysicalDisk -SerialNumber $SERIALNUMBER 


So we need to set the disk as retired; to do that we are going to use the following powershell command.
$DiskToRemove = Get-PhysicalDisk | Where-Object { $_.SerialNumber -like '*OldSerialNumber*' } | Set-PhysicalDisk -Usage Retired

As shown below 

$DiskToRemove = Get-PhysicalDisk | Where-Object { $_.SerialNumber -like '*W391A8Z8*' } | Set-PhysicalDisk -Usage Retired


Storage spaces will automatically move data off the drive. Use the command

Get-StorageJob

to get the progress of the job.  This shouldn't take very long, once finished remove the bad/retired drive and replace with the new one.


In windows add a new disk


It will find the disk you put in while the disk you removed will still show in your lists of disks until we remove it in software.


After the new disk has been added; select the old disk and remove it.



Once the disk is removed windows will begin repairing the storage spaces array


If you use the Get-PhyscialDisk command in powershell it will show the newly added drives


When Storage Spaces has completed it's rebuild there will be no job running, to check that you can use the command Get-StorageJob to get the status.


When completed everything will show up fine and as repaired.

Monday, April 27, 2026

Error Accessing Active Directory Tools in a Domain

I came across a strange error when trying to connect to active directory users and computers where I could not access the domain tool.

The error it's self was pretty generic, as shown below.



It turned out that there was an issue with a sysvol registration, we had just setup a new AD Controller and demoted and removed an old one.  To fix the issue modify the SysVolReady from 0 to 1 as shown below.

 Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters


Then you will be able to access your active directory tools again; and you can verify using run net share.  You should see a result like below if it is working properly.




Changing Apache Tomcat Catalina from using a jks keystore to a pfx keystore

I have an Apache Tomcat server that was using a jks keystore; but when I got a new certificate it was having an issue with the trust chain when I updated the certificate.  Since this is a tomcat server running on windows; I decided to move to a PFX certificate.  You can read my post on How to create a PFX Certificate if you need more information on how to do that.


For pathing the .pfx certificate is in the tomcat directory where the original jks keychain is. To change the certificate we have to update the server.xml file.  Specifically where we have the SSL Connector connecting.  When updating the connector be sure to stop the apache tomcat service and restart it after the update.



<!-- Define a SSL HTTP/1.1 Connector on port ****

         This connector uses the JSSE configuration, when using APR, the

         connector should be using the OpenSSL style configuration

         described in the APR documentation -->

    <Connector port="****"

               protocol="HTTP/1.1"

               SSLEnabled="true"

               maxThreads="150"

               connectionTimeout="20000"

               URIEncoding="UTF-8"

               compression="on"

               compressionMinSize="1000"

               noCompressionUserAgents="gozilla, traviata"

               compressableMimeType="text/html,text/xml,text/css,text/javascript"

               xpoweredBy="false"

               scheme="https"

               secure="true"

               keystoreFile="$KeystoreFile"

               keystorePass="$KeystoreFilePassword"

               clientAuth="false"

               sslProtocol="TLS"

               server="$SERVER.DOMAIN.CA"

               />


What we need to update is add the keystoreType to the serverXML file

    <!-- Define a SSL HTTP/1.1 Connector on port 8443
         This connector uses the JSSE configuration, when using APR, the
         connector should be using the OpenSSL style configuration
         described in the APR documentation -->
    <Connector port="8443"
               protocol="HTTP/1.1"
               SSLEnabled="true"
               maxThreads="150"
               connectionTimeout="20000"
               URIEncoding="UTF-8"
               compression="on"
               compressionMinSize="1000"
               noCompressionUserAgents="gozilla, traviata"
               compressableMimeType="text/html,text/xml,text/css,text/javascript"
               xpoweredBy="false"
               scheme="https"
               secure="true"
               keystoreFile="$Cert.pfx"
               keystorePass="$KEYSTOREPASSWORD"
       keystoreType="PKCS12"
               clientAuth="false"
               sslProtocol="TLS"
               server="$SERVER.DOMAIN.CA"
               />


Once the update is complete and Apache Tomcat has been restarted; you can check your certificate chain using SSL Shopper




How to create a PFX certificate file using OpenSSL on Windows


Here is how to create a .pfx certificate for use with a webserver be it IIS, Apache tomcat, what ever you happen to be using that can support a .pfx certificate.

I'm working in windows, so if you don't have it installed; install it from https://slproweb.com/products/Win32OpenSSL.html

I installed Open SSL to my C:\Program Files and set my working directory to the \bin directory.

You will need three files for generating the .pfx.
  • Your key file, 
  • the provided domain certificate 
  • intermediate certificate file
Using cmd prompt or powershell go to your working directory in my case

cd "C:\Program Files\OpenSSL-Win64\bin"

The command is pretty simple; below is the command replace the blue text with what you want to generate your PFX File.
  • $Certificate.pfx = what you want your cert name to be
  • $domain_private_key.key = Your domain key for registering SSL Certficates
  • $certficiate.crt = Your certificate file from your register for your domain
  • $intermediate.crt = Your intermediate certificate provided by your registar such as godaddy
openssl pkcs12 -export -out $certificate.pfx -inkey $domain_private_key.key -in $certificate.crt -certfile $intermediate.crt


The certificate will be generate in the \bin directory so don't forget to clean up after yourself and remove your files.  My source files I put into a folder called source and the certs I put into a folder called certs

Thursday, April 16, 2026

Upgrading Windows 11 From 23H2 to 25H2 causes error 0x800f0991

 I had a heck of a time upgrading my Windows 11 Pro System from 23H2 to 25H2 and I really did not want to do a clean install.  I really shouldn't have had a problem but it was; the issue had to do with Hyper-V and Windows Subsystem for Linux.

My system is an AMD Ryzen 9 with all the bells and whistles, and it was constantly failing windows update where the error was 0x800f0991.


Running DISM & SFC did not help at all with the results displaying everything was fine with the system.  Booting from USB and trying an offline scan also proved to be useless.

I do a lot of work with Hyper-V and upgrading from 21h2 to 23H2 was painless which is why I was so puzzled why I couldn't go from 23H2 to 25H2.  I figured it had to be something with windows virtualization; it was the only thing it could be.  I have a number of 3rd party software installed a game or two but with the changes in Hyper-V, the network virtualization stack, it made the most sense that was going to be the best place to start.

So I backed up my VM's exporting them before removing Hyper-V.  I had to remove Data Center Bridging, Hyper-V, Virtual Machine Platform, Windows Hypervisor, and Windows Subsystem for Linux.

Before removing the virtualization components in windows it failed the 6 times when I tried to upgrade though a booted USB and PC Health Check.


Once that was done I was able to upgrade using PC Health Check.


Now that I'm updated to Windows 11 25H2; unfortunately Hyper-V will not work and causes a continuous boot loop.  However the upgrade to 25H2 from 23H2 worked very well so long as Hyper-V was removed.

Fix a windows network printer that is offline

How to fix a network printer that get's installed and shows offline. By default SNMP is set to public, so when you are installing a netw...