RemoteFX Warning – how to disable RemoteFX in Windows 10

If you get this Dialog box on your Windows 10 client(s).


RemoteFX Warning

You are currently using the RemoteFX 3D Video Adapter. We no longer support this adapter and continued use may expose your machine to security risks. Learn more (https://go.microsoft.com/fwlink/?linkid=2131976)


You can see in the linked KB article that RemoteFX has been deprecated due to some security flaws and that there are better features that can be used. But it doesn’t really say how to disable RemoteFX.

To disable RemoteFx;

  1. Open a Powershell Prompt as Administrator (elevated).
  2. Run this command

Get-VMRemoteFXPhysicalVideoAdapter | Disable-VMRemoteFXPhysicalVideoAdapter

All in one line. Easy as that.

How to disable NVIDIA Display Port High Definition Audio

Edit 2018-07-15: Updated Script at the bottom: 

Each time I update my NVIDIA Graphics drivers no matter if it’s via Windows Update or via Geforce Experience or manually (ok, manually I’m able to choose to NOT install the audio driver so a kind of workaround), it’s also reinstalling the NVIDIA Audio Driver so randomly one of my displayport connected monitors will be the new and default audio output rather than my Headphones.

Making it look like this, a long list with monitors (I’ve got 5 connected) and audio playback devices I don’t want to use.

nvidia audio driver showing all monitors as playback devices.

I’m then manually selecting the Headset and making it the default device for Playback and Communication. And most of the times also disabling all the other playback devices by right clicking them. It works but feels a bit annoying.

It’s also possible to disable the NVIDIA High Definition Drivers in Device Manager, which is once again manual work.

And next time the Graphics Driver is updated, the audio driver is reinstalled so the devices that were previously disabled are now enabled again.

Luckily, it’s possible to automate the task with Powershell.

Easy as that, we use Powershell to disable the NVIDIA High Definition Audio driver so the result is like this;

And my headphones are now the default device again.

To take this one step further I’ve also automated the script to be executed automatically at computer startup with the help of a Scheduled Task. So each time the driver is updated and I reboot, the audio settings are back to how I want them to be.

  1. Save the above Powershell script in a file called “C:\temp\disablenvidiaudio.ps1”
  2. Download and unpack this file: Disable Nvidia Audio  (It’s my Exported Scheduled Task settings).
    Important Settings if you want to create the task manually else ignore step 3 and go to step 4.
  3. Optional, manually create the scheduled task.
    1. run as System (an Admin Account will work too but as I wanted it to be easy for anyone to import it, i choose System).
    2. Run whether user is logged on or not
    3. Triggers: At Startup
    4. Action: Start Program
      1. program: cmd
      2. argument: /c powershell.exe -executionpolicy bypass -file C:\temp\disablenvidiaudio.ps1
  4. Open ‘Task Scheduler’ from Windows Start Menu (search for it if needed).
  5. Select menu item “Action” and then “Import Task…”
  6. Select the extracted file from Step 2.
  7. Modify any settings as you see fit.
  8. Click OK
  9. Problem Solved

Edit 2018-07-15

After writing this post I did find a very useful Powershell Module here: https://github.com/frgnca/AudioDeviceCmdlets it gives us some options to work with the Audio Devices, so I’ve modified my disablenvidiaudio.ps1 script to look like this;

 

 

How to set DPM Azure Throttling with Powershell

When you set the System Center DPM setting for Azure throttling via GUI, you have to do the full wizard and also enter the azure passphrase to save the settings.

If you happen to not have the key handy or for some other reason want to do it via Powershell, here is the command.

Easy as that, but I couldn’t find any examples on Microsoft Docs, just how to disable throttling. The script sets the settings as in the screenshot above, you might want to adjust the bandwidth etc, it’s defined in bits.

Use DHCP Scope info to build DNS Reverse Lookup Zones and configure DNS with Powershell

I had a customer with more than 60 DHCP Scopes but all DNS Reverse Lookup Zones were unfortunately not created, configured and/or consisted of a lot of old invalid static records. And in addition both the Primary and Reverse Zones were containing a lot of old Name Servers.

Here is the scripts I ran to fix the issues. Just remove the -whatif to actually make it do stuff.

In this case, our Name Servers had the name standard ADM-V-ADDS…. so the script will remove all other name servers. Obviously, modify to fit your environment!

 

 

Failover Cluster – An error was encountered while loading the network topology

Sharing and friendly reminder for myself as I will for sure run into this problem again in the future.

When creating a Windows Failover Cluster, you get this error message (btw, did you know you can Ctrl+C copy the text from a dialog box and paste like this);

 

Solution: In this case I had to remove the User Account from AD’s “Protected Users” group because Failover Cluster is still using NTLM and CredSSP. Relogon and it’s now possible to create the cluster, and then just add the user back into the Protected Users Group.

Using Azure DNS for Dynamic DNS with PowerShell

I’ve been using DynDNS and other Free DNS Services for  some time, but as they are getting harder and harder to use for free. Like you need to remember to logon and click a button once a month and what not. I figured it was time to migrate to Azure DNS instead. Being able to use PowerShell to handle my DNS together with everything I’ve already automated makes my life so much easier. And as I’ve already got a couple of domains and some Azure subscriptions there was more or less no increased cost for me.  As you can see in the picture, Azure DNS Pricing is really cheap.

I’ve used Task Scheduler to scheduled the script below to run at Computer Startup on one of my Hyper-V Hosts at home, and then every hour. That guarantees that if there is a power failure and I get a new IP from my ISP, when the server boots, the external DNS pointers will be updated at once and just to be sure check every hour.

In short, the script checks your External IP and compares that to the IP of the hostname you want updated. If they are not identical, it will logon to Azure and update the hostname with your current IP.
Simple as that.

In my case, I’ve setup a UserName in AzureDNS who has access to just that DNSZone and are using that UserName in the script.

 

You obviously need to migrate an existing or register a new DNS Zone to Azure and use Microsoft’s NameServers for this to work.

 

How to solve EVENT ID 1202 SceCli 0x57 Parameter is incorrect

Customer is repeatedly getting this Event ID on all Servers and Clients, especially on the Domain Controllers being logged every 5 minute.

Searching for that Error gives thousands of results, most less helpful.The way I solved this problem was like this.

  1. On one of the servers having the problem, run RSOP.MSC
  2. Resultant Set of Policies showed a Warning on the Computer policies. Selecting properties there showed the same error as in our Event Log.
  3. Browsing the Tree showed that there were a problem in the Password Policy section, from the Default Domain Policy.
  4. Which were also visible in GPMC (Group Policy Management Console)
  5. By modifying the Default Domain Policy and fixing the bad entries (no clue how they got there). The Error message (and problem) is now gone.

 

 

 

 

 

KB4048953 and KB4049065 fails to install (hungs). How to fix it.

We had a server which failed to install Windows Server / Windows 10 Service Update and November 2017 updates with the names KB4049065 and KB4048953 through Windows Update. The installation simply never completed and it looked like it hung.

Rather than go through all the various (failed) steps I did to troubleshoot it, I’ll just tell how to solve it.

  1. Start by downloading the packages from Microsoft Update Catalog to c:\temp;
    http://www.catalog.update.microsoft.com/Search.aspx?q=KB4049065 http://www.catalog.update.microsoft.com/Search.aspx?q=KB4048953 (Cumulative Update)
  2. Then expand the MSU files (using wusa.exe to install them failed for me) by doing this in a command prompt:
  3. You should now have two folders with files like this;
  4. As this is a Windows Server 2016 (or Windows 10) we can use Powershell rather than Dism to install the cab files into Windows.
  5. Open Powershell with elevated permissions (as Admin).
  6. To install both packages do this, and have patience. It took more than 4 hours for them to install on my server and it looked like the installation hung for a long time around 15%.
  7. When the installation has completed reboot the server and you are done!

 

 

WSUS Maintenance script for TechDays audience

WSUS Maintenance script for TechDays audience

 

 

Get GeoLocation with PowerShell and set NTP Server in a GPO

Using Powershell to locate your Geographical Location with the help of GeoLocation (IP-Address) is quite easy, cool and useful!

When we build Private and Hybrid Clouds across the globe in various countries and continents I want to make sure the Active Directory PDC Emulator is using a valid time source based on that location.

GeoLocation with Powershell

So with this small script (it’s using multiple WebServices to cycle through until it gets an answer) we can get a rough location for where we are and in my case it’s usually enough to know what country the datacenter is in.

That can then be used as you see fit. Though for me, I’m using it to update the Group Policy being applied to the PDC Emulator to point to the country specific NTP Pool with the generic pool as backup value.

That’s how easy it’s to modify a Group Policy object.

Please share any solutions using GeoLocation in the comments. It might give me some nice new ideas too!