diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 7770930c..6b58dfa7 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -15,26 +15,27 @@ jobs:
     runs-on: windows-2019
     steps:
       - uses: actions/checkout@v4
-      - name: install dependencies
+      - name: Install dependencies
         env:
           LEATHERMAN_VERSION: 1.11.0
           CPP_PCP_CLIENT_VERSION: 1.7.6
           CPPHOCON_VERSION: 0.2.0
           GITHUB_TOKEN: ${{ github.token }}
+        shell: pwsh
         run: |
-          # The mingw 5.2 package requires chocolatey 1.4, so uninstall 2.x
+          # The mingw 5.2 package requires chocolatey 1.4, so delete 2.x
           Remove-Item -Path C:\ProgramData\chocolatey\ -Recurse -Force
 
-          # Install choco 1.4
+          # Reinstall choco 1.4 in the same place
           $env:chocolateyVersion = '1.4.0'
           [System.Net.ServicePointManager]::SecurityProtocol = 3072
           iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
           $env:PATH = "$env:PATH;C:\ProgramData\chocolatey\bin"
 
-          # Need to reinstall 7zip
+          # This is only needed because we deleted choco 2.x
           choco install -y 7zip.install
 
-          # And our dependencies
+          # And our build dependencies
           choco install -y mingw-w64 -Version 5.2.0 -source https://www.myget.org/F/puppetlabs
           choco install -y cmake -Version 3.2.2 -source https://www.myget.org/F/puppetlabs
           choco install -y gettext -Version 0.19.6 -source https://www.myget.org/F/puppetlabs
@@ -43,8 +44,9 @@ jobs:
           choco install -y pl-openssl-x64 -Version 1.0.24.1 -source https://www.myget.org/F/puppetlabs
           choco install -y pl-curl-x64 -Version 7.46.0.1 -source https://www.myget.org/F/puppetlabs
           choco install -y pl-zlib-x64 -Version 1.2.8.1 -source https://www.myget.org/F/puppetlabs
-          #choco install -y pester -Version 4.10.1
+          choco install -y pester -Version 4.10.1
 
+          # And our library dependencies
           gh release download -R puppetlabs/leatherman $env:LEATHERMAN_VERSION --pattern "leatherman.7z"
           7z.exe x leatherman.7z -oC:\tools | FIND /V "ing "
 
@@ -53,15 +55,27 @@ jobs:
 
           gh release download -R puppetlabs/cpp-hocon $env:CPPHOCON_VERSION --pattern "cpp-hocon.7z"
           7z.exe x cpp-hocon.7z -oC:\tools | FIND /V "ing "
+        - name: Build
+          shell: pwsh
+          run: |
+            # Include Ruby and Powershell for unit tests
+            # Intentionally excluding Git (due to conflicting sh.exe) and
+            # OpenSSL as previously we were linking against the wrong OpenSSL
+            # DLLs.
+            $env:PATH=C:\tools\pl-build-tools\bin;C:\tools\mingw64\bin;C:\ProgramData\chocolatey\bin;C:\hostedtoolcache\windows\Ruby\2.5.9\x64\bin;C:\Program Files\7-Zip;C:\Windows\system32;C:\Windows;C:\Windows\System32\WindowsPowerShell\v1.0
+            cmake -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE="C:\tools\pl-build-tools\pl-build-toolchain.cmake" -DCMAKE_PREFIX_PATH="C:\tools\leatherman;C:\tools\cpp-pcp-client;C:\tools\cpp-hocon" -DCMAKE_INSTALL_PREFIX=C:\tools -DBOOST_STATIC=ON .
+            mingw32-make install
+        - name: Test
+          shell: pwsh
+          run: |
+            cp C:\Tools\pl-build-tools\bin\libeay32.dll .\bin
+            cp C:\Tools\pl-build-tools\bin\ssleay32.dll .\bin
+            ctest -V 2>&1 | %{ if ($_ -is [System.Management.Automation.ErrorRecord]) { $_ | c++filt } else { $_ } }
+            type ./acceptance/files/complex-args.json | ./exe/PowershellShim.ps1 ./acceptance/files/complex-task.ps1
+            Invoke-Pester -EnableExit
 
-          # Minimize environment polution; previously we were linking against the wrong OpenSSL DLLs.
-          Remove-Item -Path "C:\Program Files\OpenSSL" -Recurse -Force
-
-          Write-Host $env:PATH
-          $env:ORIGPATH = $env:PATH
-          # Include Ruby and Powershell for unit tests.
-          $env:PATH = "C:\tools\pl-build-tools\bin;C:\tools\mingw64\bin;C:\Program Files\PowerShell\7;C:\hostedtoolcache\windows\stack\2.13.1\x64;C:\Program Files\dotnet;C:\hostedtoolcache\windows\Ruby\2.5.9\x64\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\Chocolatey\bin;C:\Program Files\CMake\bin;C:\Users\runneradmin\.dotnet\tools;C:\Users\runneradmin\.cargo\bin;C:\Users\runneradmin\AppData\Local\Microsoft\WindowsApps"
-
-          cmake -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE="C:\tools\pl-build-tools\pl-build-toolchain.cmake" -DCMAKE_PREFIX_PATH="C:\tools\leatherman;C:\tools\cpp-pcp-client;C:\tools\cpp-hocon" -DCMAKE_INSTALL_PREFIX=C:\tools -DBOOST_STATIC=ON .
-          mingw32-make install
-        shell: pwsh
+#Remove-Item -Path "C:\Program Files\OpenSSL" -Recurse -Force
+#Write-Host $env:PATH
+#$env:ORIGPATH = $env:PATH
+#$env:PATH = "C:\tools\pl-build-tools\bin;C:\tools\mingw64\bin;C:\Program Files\PowerShell\7;C:\hostedtoolcache\windows\stack\2.13.1\x64;C:\Program Files\dotnet;C:\hostedtoolcache\windows\Ruby\2.5.9\x64\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\Chocolatey\bin;C:\Program Files\CMake\bin;C:\Users\runneradmin\.dotnet\tools;C:\Users\runneradmin\.cargo\bin;C:\Users\runneradmin\AppData\Local\Microsoft\WindowsApps"
+#shell: pwsh