I’ve written previously about Tracking work and getting some kind of sense of achievement even when you fall down a rabbit hole but this post isn’t quite so positive. But it’s quite technical so if you are into that kind of thing, stick around. If not, please return to your regularly scheduled browsing.

Here’s the ultimate aim: Run PowerShell Universal to show some dashboards relating to information from active directory, azure, DUO and probably VMware as well.

Here’s what actually happens.

  • Day 1: Spend over ten hours trying to figure out why I couldn’t get VSCode to talk to the PowerShell Universal server.
    • During this I determined that NVDA was way more efficient than Jaws when using VSCode.
      • Realized I had to update NVDA finally and my old Eloquence plugin wouldn’t work. So, had to update that plugin too.
      • Remapped my keyboard commands in NVDA because the defaults annoy me a little.
      • Took some time to look at the new options in NVDA
    • Installed the PowerShell Pro Tools and the PowerShell Universal modules. But ran into anti-virus problems because part of the file name of one of the commands includes the letters c r y p t. With everything going on in the world around ransom ware, these letters are blocked from executing any action. Still, got around this easily enough by adding exceptions on the server side.
    • Uninstalled and reinstalled the VSCode plugins to try to get this to connect. Still, I was getting weird error messages. When I looked at the logs for VSCode, I saw it was trying to run a module called temp. I searched high and low for this but couldn’t find anything remotely useful. Finally, I Emailed the developer. I got a response back a few days later saying that there was a bug in the plugin and to try again. This worked finally. But I wasted a massive amount of time on it.
    • I should add that I also tried doing everything all over again on a second PC. I even uninstalled and reinstalled VSCode and VSCode insiders, the PowerShell plugin and I tried it with the PowerShell preview plugin as well. Nothing worked.
  • I converted all of my old PowerShell scripts into one module. I also modified that module to return objects for everything. This is going to feed directly into the dashboard. When I finally get to create it.
  • A week passed before I could try the Dashboard stuff again because of work commitments. But now, although the VSCode extension / plugin is connecting, there’s an error with a lot of numbers that mean nothing to me displayed when I start the service from VSCode. Fortunately, this doesn’t actually make a difference. But you’ve probably guessed it, I have spent over an hour troubleshooting this as well.
  • Oh, there’s a really annoying section in the configuration. It says, “Path to Service Executable” Now. To me, that includes the full path to the executable file. But no!!! It’s just the path to the folder containing the executable. This is incredibly frustrating. I encountered the error twice before I finally took a second to read the error message and realized my mistake.
  • Finally. I got the dashboard connected. Oh, and I can make changes to the dashboard files in VSCode! But guess what? Now on my work machine, I notice that the dashboards are not running. so, I swap over to the other computer and happily find out that the dashboards are running correctly on that system. I have now finally made some minor edits to a dashboard. I install my lovely new active directory module and get ready! But no! This machine isn’t domain joined. So, there’s two problems. 1. RSAT (Remote Server administration Tools) isn’t installed. And 2. Even if it was, this isn’t domain joined so the user context I would be running the module as isn’t going to have access to any domain resources. Yes. I should have thought of this without going all this way. But in my defence, I haven’t had a day off in over 3 weeks for various reasons and many of these days have been stupidly long.
    • This took me down another road. I decided that as I was going to ultimately run the dashboard from a server, I may as well just install the Dashboard on that server anyway and just get on with it.
      • Firstly, NuGet wasn’t installed.
      • Then I had a problem with PowerShell. It couldn’t look at the online PowerShell Gallery. The incorrect version of the Cryptographic libraries were running. To fix this, I ran the following two commands.
        Set-ItemProperty -Path ‘HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319’ -Name ‘SchUseStrongCrypto’ -Value ‘1’ -Type DWord
        Set-ItemProperty -Path ‘HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319’ -Name ‘SchUseStrongCrypto’ -Value ‘1’ -Type DWord
      • This let me download NuGet but again, because of Anti-virus, I’m having problems installing some modules such as AZ for Azure because it also includes Crypt in the name.
        PackageManagement\Install-Package : Package ‘Az.DataFactory’ failed to be installed because: Access to the path ‘C:\Users\%UserName%\AppData\Local\Temp\blpbm1k0\Microsoft.DataTransfer.Gateway.Encryption.dll’ is denied.
      • OH, I should also say that I tried all of this on another server as well. For some reason, I thought I remembered that PowerShell is broken on this first server. I remembered that incorrectly. But it was still a useful test.
      • So, I’m giving up on this for the moment because that crypt issue seems to be causing me other issues around running the Dashboards.
    • I decided to take my mind off this by trying to fix something else. I have 54 RDS session host servers but recently when I try to administer them over the VPN, I get WinRM timeout issues.
      • I decided to update the applications directly through PowerShell. This confirmed that WinRM was hitting a timeout of 30 seconds but nothing I do let’s that timeout increase.
      • ON the upside, I’ve written a very useful module that has some nice functions in it that when the WinRM issue is fixed will let me do a few normal admin tasks faster directly through the CLI.

There are a few problems here:

Firstly, I’m putting way too much pressure on myself. There are a lot of projects and problems in work at the moment. I’m focused on them for most of the day on Monday to Friday. Including outside normal work hours. But I have projects that I want to work on myself. Both because they are technically a lot more interesting and also will add value by decreasing overall administration time and will probably even reduce support calls as well. But so many things are going wrong. It’s probably a catch 22. I need to take more time off during rest periods. I.E. When I’m not meant to be in work, I shouldn’t be working still. But If I don’t put extra work in, I’m losing interest because the projects I’m currently working on are very dull and are not technically challenging.

That’s not all of course. I haven’t told you about the other things I’ve tripped over while doing this extra work. For example, during a meeting on Friday, someone asked for global admin access. I wasted a few minutes finding that person and checking their permissions only to find that they already have it. Or getting asked for a certificate without being provided a CSR. So, I have to generate the CSR as well as the certificate. Even though I know the system they will use to upload the cert has a native way of generating the CSR and associating the cert created with the key. Oh, and I have another computer sitting in the office in Dublin somewhere but it’s either been powered off or I can’t remember it’s IP or hostname. I think it’s been powered off. But I wasted about 30 minutes over the weekend trying to get back onto that. Because if I can’t sort the WinRM / WMI timeout issue, I know I will be able to work around it by connecting to a machine on a trusted network on site.

Finally, then there’s the urgent meetings that I get pulled in because there’s an issue with authentication. Only to find that there’s nothing wrong with authentication at all, it’s something else completely different and if some basic testing had been done on the login, the company contracted to do this work would have noticed very quickly that user attributes other than the Email address were now displayed therefore, it’s logical to conclude that login was successful but there’s an unrelated problem with the application.

So many things going on. I’m so tired. But yet I’m up at 4am today and I’ve just wated 3 hours without making much progress and there’s still 2 hours before the workday even starts. Why am I up so early? Because my stupid brain won’t turn off at night if there’s a problem that hasn’t been solved. So, this PowerShell stuff that I should be able to do easily is really getting on my nerves because supporting systems / modules aren’t behaving correctly.

Here’s a few more accessibility things that have caused me major delays and more trips down this rabbit hole of pain and torture:

  • This morning, when I decided it would be a great idea to get the dashboard running on a server, I decided it would be a good idea to use NVDA remote on the server with a direct connection back to my computer.
    • The problem first was that I had multiple languages installed for some reason so the shift and caps lock keys weren’t working properly. Two reboots later, this was fixed. The problem here is I have a rather strong PC with a RAID array so a reboot takes well over 5 minutes.
    • Okay, So I got NVDA installed on the server and my local machine and thanks to some messing around, I opened a port on my home network to let the computer in work communicate directly to it. This isn’t as insecure as it sounds.  The connection is strictly ….. restricted.  The traffic is encrypted and it can only be initiated by me.  Unfortunately, when I’m connected over the VPN, NVDA want’s to listen on the new default IP which doesn’t use my home network connection route as all traffic is routed over the VPN.  Even when I start the server on one IP then connect to the VPN afterword, it still get’s it’s nickers in a twist and doesn’t work correctly.
    • Side note, There are some really useful NVDA plugins available these days. That took a good half an hour of my time but it’s my own fault I suppose.
    • Anyway, I couldn’t get NVDA remote to work in this situation. With the combination of PowerShell problems, NVDA not working as I expected and the anti-Virus blocking crypt, I’ve just given up for a while and have moved onto something else.   Such as writing this long and pointless blog post, creating that CSR for that person and in a moment, I going to wake the children, make breakfast for them, walk them to the bus, go take the dog for a walk before coming back to sit here in an hour and 40 minutes to actually begin my real working day.  FUN TIMES!