Projects Blog

Listing Installed Software on a Windows Machine with PowerShell

Getting a list of installed software programmatically can be a giant hassle on a Windows system. What I wanted was a list that mimics what we see in the control panel. After way too much Googling, I pieced together this solution.


# Get a list of installed software that matches Add/Remove Programs in control panel
function Get-InstalledSoftware {
    $paths = @( 

    if ([Environment]::Is64BitProcess) {
        $paths += "\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\"

    $paths |% {
        if (Test-Path "HKLM:$_") { Get-ChildItem "HKLM:$_" }
        if (Test-Path "HKCU:$_") { Get-ChildItem "HKCU:$_" }
    } |
    ForEach-Object { Get-ItemProperty $_.PSPath } |
    Where-Object {
        $_.DisplayName -and !$_.SystemComponent -and !$_.ReleaseType -and !$_.ParentKeyName -and ($_.UninstallString -or $_.NoRemove)
    } | Sort-Object DisplayName 


I’ve used this to verify something was installed from Puppet and to programmatically uninstall ClickOnce apps. Enjoy!

Updating the BIOS on Gigabyte BRIX GB-BSi5H-6200

The BRIX that I received from Amazon had a very old BIOS version installed. Newer versions enable better support for certain memory modules and other hardware. Unfortunately, Gigabyte does not provide any instructions at the time of writing on how to flash the BIOS on these machines.

To flash the BIOS on the GB-BSi5H-6200 (and likely all Skylake BRIX units), complete the following.



  1. Launch Rufus and select your USB drive. Leave the defaults.
    Note: This will erase all data on the USB drive.
  2. Extract the files from the BIOS zip archive downloaded above to the root of the USB drive. When finished, the USB drive will look something like this:biosdrive
  3. Plug your USB drive into the BRIX and boot it up. Press the DEL key as it’s booting to enter the BIOS setup. You will need to set the following options to be able to boot into the FreeDOS USB Drive. Take note of the settings already in place to revert them later.Advanced > OS Selection > OS Selection > Windows 7
    Advanced > OS Selection > Storage > Legacy
  4. Reboot the BRIX and press F12 as the system is booting to enter the boot selection screen. Choose your USB Drive from the list, making sure not to select one if it starts with “UEFI”
  5. Once booted, you will be at a C:> prompt. Type flash.bat and press enter.
  6. The system will then flash your BIOS. This can take up to 15 minutes.
  7. Once finished, you can power off the system, remove the USB drive, and power it back on with a new BIOS.
  8. Revert the settings to their previous values from Step 3.

Audio Fix for the Gigabyte BRIX GB-BSi5H-6200 on Fedora 24

I recently purchased the Gigabyte Brix GB-BSi5H-6200 to replace my dated HTPC. It’s a fantastic little powerhouse NUC-form-factor PC and should be future-proof for 4k video when that time finally arrives. For today, however, it can drive 1080p like nobody’s business.

However, after installing Fedora 24 (LXDE spin) on it, I found there was an issue with the audio. The sound system did not detect the HDMI port as an audio output. Only the front panel 3.5mm connectors were detected. It works perfectly on Ubuntu 16.04, though! What gives?

After comparing the module options on the Ubuntu install vs Fedora, I discovered Ubuntu had many module options set that enabled the Intel sound driver to work properly.
Create the file /etc/modprobe.d/intel_snd.conf and add the following lines:

option snd_pcsp index=-2
option snd_usb_audio index=-2
option snd_atiixp_modem index=-2
option snd_intel8x0m index=-2
option snd_via82xx_modem index=-2
option snd_atiixp_modem index=-2
option snd_intel8x0m index=-2
option snd_via82xx_modem index=-2
option snd_usb_audio index=-2
option snd_usb_caiaq index=-2
option snd_usb_ua101 index=-2
option snd_usb_us122l index=-2
option snd_usb_usx2y index=-2
option snd_cmipci mpu_port=0x330 fm_port=0x388
option snd_pcsp index=-2
option snd_usb_audio index=-2

Then reboot. Done!

Batch Conversion of DVDs with Handbrake

I recently had a project to backup over 150 DVD titles to network storage. To save space, I decided to convert them all from DVD to h264. This cut the file sizes down from 4GB to about 1GB each. Processing each took around 20-30 minutes on my i7-4790k so I wanted to automate the process.

Below is the script I wrote to do everything for me. To use this yourself, just install Handbrake for Windows and set the user editable options seen at the top of the script and run it!

Download here

Read the rest of this entry »

Using the Kace K1000 VNC Button With Chrome And Firefox

Dell’s Kace K1000 appliance is a neat little device but it is not yet complete as a product. If you have a managed machine inside the K1000, you will see a small icon that opens your UltraVNC viewer and connects to that computer for remote management. Very handy! Unfortunately, it only works in IE. Bad, programmers, bad!

I wrote a user script for Chrome and Firefox (with Greasemonkey) that will make this work. It involves registering a protocol in your OS of choice (like http://, ftp://, etc) to open your VNC viewer and changing the link on the K1000 to point to that new protocol.

Below is the userscript. Copy it into your favorite text editor, change MYK1000APPLIANCE in the include line to be the location of your K1000 box and save it as named below. You can import it into Chrome by just dragging the file into an open Chrome window. Read the rest of this entry »

Change Your Skype Mood Text In Linux With Python

I thought it would be neat to change my Skype mood text based on what I was watching on my WDTV. I have a WDTV Live Plus modded with WDLXTV (version based on 1.05.04) that displays what I am watching on a web dashboard. To accomplish this, it is as simple as scraping the data from the dashboard and passing it to Skype using Skype’s API. On Linux, Skype uses D-Bus to interact with its API. The scripts I used are below. Read the rest of this entry »

I used to do Alchemy in Skyrim manually…

Then I made a calculator!

I didn’t care for any of the other alchemy calculators that were available so I made my own. I wanted something that would show me the most profitable path for the ingredients I owned. I also added a way to save your inventory for later use. You can try it out here.

Many thanks to this fine gentleman or gentlewoman for your data (link no longer works). I wish I could have found a way to contact you!

I have not tested this in Internet Explorer. It should work in IE9 but any other IE version is unknown. Chrome and Firefox work flawlessly.

EDIT 10/11/2014:

I made some updates so this will work much much better in the Steam browser. Check it out!

Small, Powerful, Low Power Consumption NAS

For as long as I have been into technology, my downloads, virtual machines, backups, testing platforms, and general storage have all been scattered about several devices. My newest solution is running my large downloads on a modded WDTV to preserve power and keep them centralized. This has become cumbersome as the files have gotten larger and as my needs have grown more complex. I’ve been imagining the perfect all-in-one solution for the past couple of years, researching new hardware and dreaming bigger and better every few months. After finally moving into a space that would accommodate such a system and finally having the funds saved up, it is time to take the plunge! Read the rest of this entry »