Category: Windows

Cascadia Code in Windows Terminal

New Microsoft Code and Terminal Font Cascadia Code

Cascadia Code is the latest monospaced font shipped from Microsoft focusing on delivering an excellent font for command-line experiences and code editors like Visual Studio Code. The Cascadia Code font was first announced at the Microsoft Build conference in May 2019. And yesterday, Microsoft just released Cascadia Code version 1909.16 and it is available publicly on GitHub. Cascadia Code makes an excellent font for the Windows Terminal, and you can download it today.

It is the latest monospaced font shipped from Microsoft and provides a fresh experience for command line experiences and code editors. Cascadia Code was developed hand-in-hand with the new Windows Terminal application. This font is most recommended to be used with terminal applications and text editors such as Visual Studio and Visual Studio Code.

I took some time to install Cascadia Code font on my Surface Book 2 and it works great with application like Visual Studio Code and the Windows Terminal running PowerShell. To start using it, simply download the font, install it, and configure the application to use is. In the Windows Terminal app, open the settings.json file and change the font in the specific terminal profile.

VS Code Cascadia Code setting for Windows Terminal

VS Code Cascadia Code setting for Windows Terminal

  "profiles" : 
    [
        {
            "acrylicOpacity" : 0.5,
            "closeOnExit" : true,
            "colorScheme" : "VibrantInk",
            "commandline" : "C:\\Program Files\\PowerShell\\6\\pwsh.exe",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Cascadia Code",
            "fontSize" : 12,
            "guid" : "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
            "historySize" : 9001,
            "icon" : "ms-appx:///ProfileIcons/{574e775e-4f2a-5b96-ac1e-a2962a402336}.png",
            "name" : "PowerShell Core",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : "%USERPROFILE%",
            "useAcrylic" : true,
            "backgroundImage": "C:/Users/thoma/OneDrive/Pictures/Me/Thomas Maurer Logos 2016/WindowsTerminal/Black Cloud Robot.png",
            "tabTitle": "PowerShell Core "
        },

If you want to know more about customizing the Windows Terminal, check out my blog post. If you are optimizing and customizing your code editor experience, you should also have a look at my favorite themes for Visual Studio Code.

The font is open source and licensed under the SIL Open Font license on GitHub, so it is easy to contribute. Have you tried the Cascadia Code font, and what do you think about the new coding font? Do you like it? And if you have any questions, please let me know in the comments.

If you are looking for some other cool Microsoft coding projects, have a look at Azure Cloud Shell and PowerShell 7.



Ping Azure VM Public IP address

How to enable Ping (ICMP echo) on an Azure VM

This is just a very quick blog post because I got the question from a couple of people. In this blog post want to show you how you can enable ping (ICMP) on a public IP address of an Azure virtual machine (VM). First, just let me say that assigning a public IP address to a virtual machine can be a security risk. So if you do that, make sure you know what you are doing. If you need admin access to virtual machines only for a specific time, there are services like Azure Just-in-Time VM Access (JIT) and Azure Bastion you should have a look at. Now back to the topic, Azure by default denies and blocks all public inbound traffic to an Azure virtual machine, and also includes ICMP traffic. This is a good thing since it improves security by reducing the attack surface.

Azure Network Security Group Port Rules Deny All Inbound Traffic to Azure VM

Azure Network Security Group Port Rules Deny All Inbound Traffic to Azure VM

This also applies to pings or ICMP echo requests sent to Azure VMs.

Ping Azure VM failed

Ping Azure VM failed

However, if you need to access your application from a public IP address, you will need to allow the specific ports and protocols. The same applies to the ICMP (Internet Control Message Protocol) protocol. The ICMP protocol is typically used for diagnostic and is often used to troubleshoot networking issues. One of the diagnostic tools using ICMP is ping, which we all know and love.

What do I need to do to be able to ping my Azure virtual machines (VMs)

Overall we need to do two main steps:

Configure Network Security Group (NSG) to allow ICMP traffic

So here is how you enable or allow ping (ICMP) to an Azure VM. Click on add a new inbound port rule for the Azure network security group (NSG).

Enable Ping ICMP in a NSG on an Azure VM

Enable Ping ICMP in an NSG on an Azure VM

Change the protocol to ICMP. As you can see, you can also limit the sources which can make use of that rule, as well as change the name and description. You can also use the following Azure PowerShell commands to add the inbound security rule to your NSG.

Get-AzNetworkSecurityGroup -Name "AzureVM-WIN01-nsg" | Add-AzNetworkSecurityRuleConfig -Name ICMP-Ping -Description "Allow Ping" -Access Allow -Protocol ICMP -Direction Inbound -Priority 100 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange * | Set-AzNetworkSecurityGroup
Configure Network Security Group PowerShell

Configure Network Security Group PowerShell

Set up the operating system to answer to Ping/ICMP echo request

If you haven’t already configured the operating system that way, you will need to allow ICMP traffic, so the operating system response to a ping. On Windows Server, this is disabled by default, and you need to configure the Windows Firewall. You can run the following command to allow ICMP traffic in the Windows Server operating system. In the Windows Firewall with Advanced Security, you can enable the Echo Request – ICMPv4-In or Echo Request ICMPv6-In rules, depending on if you need IPv4 or IPv6.

Windows Firewall Enable Ping

Windows Firewall Enable Ping

You can also run the following command to do that:

# For IPv4
netsh advfirewall firewall add rule name="ICMP Allow incoming V4 echo request" protocol="icmpv4:8,any" dir=in action=allow
 
#For IPv6
netsh advfirewall firewall add rule name="ICMP Allow incoming V6 echo request" protocol="icmpv6:8,any" dir=in action=allow

After doing both steps, you should be able to ping your Azure Virtual Machine (VM) using a public IP address.

Ping Azure VM Public IP address

Ping Azure VM Public IP address

I hope this helps you be able to ping your Azure VMs. If you have any questions, please let me know in the comments.



Windows Terminal Background Acrylic Opacity

How to Change the Windows Terminal Background Image

As you may know, Microsoft released a new Windows Terminal, which is currently in preview. However, it has some great new features, and a lot of people are currently trying it out. Now I got a lot of questions about how you can change the background of the Windows Terminal. So I decided to write a quick blog post about how you can configure and customize the Windows Terminal background image. There are multiple ways you can do this. And you can not only change the color or use a background image, but you can also change the opacity, and if it should use the acrylic Windows effect.

Customize the Windows Terminal Background Image

First open the settings of the Windows Terminal app, which will open a JSON file, where the settings are stored.

Windows Terminal Settings

Windows Terminal Settings

This will allow you to customize the settings and colors of the terminal. Every console has a so-called profile, which you can modify. Let’s start with adding a background image.

        {
            "acrylicOpacity" : 0.5,
            "closeOnExit" : true,
            "colorScheme" : "VibrantInk",
            "commandline" : "C:\\Program Files\\PowerShell\\6\\pwsh.exe",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 12,
            "guid" : "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
            "historySize" : 9001,
            "icon" : "ms-appx:///ProfileIcons/{574e775e-4f2a-5b96-ac1e-a2962a402336}.png",
            "name" : "PowerShell Core",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : "%USERPROFILE%",
            "useAcrylic" : true,
            "backgroundImage": "C:/Users/thoma/OneDrive/Pictures/Me/Thomas Maurer Logos 2016/WindowsTerminal/Black Cloud Robot.png",
            "tabTitle": "PowerShell Core "
        },

With the “backgroundImage” value, you can set a specific image as the background.

"backgroundImage": "C:/Users/thoma/OneDrive/Pictures/Me/Thomas Maurer Logos 2016/WindowsTerminal/Black Cloud Robot.png"

Opacity

You can use the “backgroundImageOpacity” to set the opacity of the for the background image, and this is super helpful when you have a full background image.

Windows Terminal Background Image Opacity

Windows Terminal Background Image Opacity

You can add the following value to configure the opacity.

"backgroundImageOpacity" : 0.2

Acrylic effect

You can also configure the Windows Terminal to use the Acrylic effect in Windows 10 for the background. This will combine the acrylic effect with the background image.

Windows Terminal Background Acrylic Opacity

Windows Terminal Background Acrylic Opacity

Just set the following value to the settings.

"useAcrylic" : true,
"acrylicOpacity" : 0.5

Here is a full config you can have a look at, with all the settings enabled.

Profile

Profile

Let me know if that helps you to set, change, and customize the background image of the Windows Terminal. You can read more about the new Windows Terminal on the official blog. And if you want to know more about how you can run Azure Cloud Shell in the terminal, check out my blog post. If you have questions, let me know in the comments.



Run Windows Admin Center on Windows Server Core

Run Windows Admin Center on Windows Server Core

Windows Admin Center is a locally deployed, browser-based app for managing servers, clusters, hyper-converged infrastructure, and Windows 10 PCs. If you ever asked yourself if Windows Admin Center (WAC) runs on Windows Server Core, the answer is yes. Run and install Windows Admin Center on Windows Server Core, simply copy the MSI installer to the Windows Server, or download it directly. If you are running Windows Server in a Hyper-V virtual machine, PowerShell Direct and be very handy to copy files using the VMBus from the Hyper-V host to the virtual machine.

Copy Windows Admin Center MSI to Windows Server Core VM PowerShell Direct

Copy Windows Admin Center MSI to Windows Server Core VM PowerShell Direct

Download Windows Admin Center (WAC) from here. You can simply use the following commands on your Hyper-V host to copy a file using PowerShell Direct.

$cred = Get-Credential
$s = New-PSSession -VMName WindowsServerInsider -Credential $cred
Copy-Item -Path .\WindowsAdminCenterPreview1908.msi -ToSession $s -Destination "C:\Users\Administrator"

Now you can run the MSI installer for Windows Admin Center. There is also an unattended option for WAC on Windows Server Core. You can find more about installing WAC here.

Install Windows Admin Center on Windows Server Core

Install Windows Admin Center on Windows Server Core

After the installation has finished you can now remotely access the Windows Admin Center web portal form your workstation. However, if you install the new Microsoft Edge Insider Preview, which runs on Windows Server Core as well. You can access the console form your local machine. Don’t do that in production, but it is great if you are running demos or you need to troubleshoot the installation.

Install Microsoft Edge on Windows Server Core

Install Microsoft Edge on Windows Server Core

You can download the Microsoft Edge Insider from here. Thanks to Jeff Woolsey for the tip.

If you want to know more about Windows Admin Center check out my blog post and the Microsoft Docs. If you have any questions, please let me know in the comments. By the way, also make sure that you check out the Windows Admin Center Hybrid features, which allows you to easily connect Azure services.



Azure Reservations Reserved Instances and reserved capacity

How to Save Money on Azure using Azure Reservations

I wanted to quickly share something which existing for quite some time but talking with customers still a lot of people don’t know about it yet. And since yesterday the Azure team also shared some news on it, so it is the perfect time to have a look at Azure Reservations (Azure Reserved VM Instances or Reserved capacity). Usually, you pay Azure services in a Pay-As-You-Go model, which gives you the pricing flexibility and agility you expect from the cloud. But, a lot of customers have services like virtual machines or databases which need to run continuously for the next years. With purchasing reservations for these Azure services, you give the Azure team visibility into your one-year or three-year resource needs in advance, and this allows the Azure team to be more efficient with capacity planning. In return, reservations will give you back these savings to you as discounts of up to 72 percent.

The significant change which was announced yesterday is that there are now monthly payment options available for Azure reservations. Which means you can now pay reservations upfront or on a monthly basis. You can find more information about Azure Reservations on Microsoft Docs.

Azure Reservations Chart

Azure Reservations Chart

No worries, you can mix Azure reservations for your predictable capacity needs, with the Pay-As-You-Go model for your unpredictable capacity needs. While purchasing reservations is only a few simple steps in the Azure portal, we also understand that your workload and application needs may change, and exchanging reservations is easy. You can even cancel your reservation at any time and get the remaining months returned for a termination fee.

Azure Reservations are currently available as Azure reserved instances (RIs), for Windows and Linux virtual machines. As well as Azure reserved capacity for Azure data services, like Azure SQL Database, Azure Cosmos DB and Azure SQL Data Warehouse. But there are also a lot of other services available.

Azure Reservations Reserved Instances and reserved capacity

Azure Reservations Reserved Instances and reserved capacity

Combining the Azure Reserved VM Instances and the Azure Hybrid Benefit, you even can save up to 80 percent. To learn more about Azure RIs or reserved capacity, check out the following pages:

To find out more about reservations, check out the Azure reservations page. You should also have a look at the lastest new options like the Azure Dedicated Host and VMware solutions on Azure. If you have any questions, please let me know in the comments.



Windows Subsystem for Linux 2 WSL2 on Windows Server

How to Install WSL 2 on Windows Server

A couple of months ago Microsoft announced the Windows Subsystem for Linux 2 (WSL 2), which is a successor of the Windows Subsystem for Linux shipped a couple of years ago. WSL 2 is currently available for Windows Insiders running Windows 10 Insider Preview Build 18917 or higher and with the Docker Tech Preview, you can now even run Docker Linux Container directly on WSL 2. With the latest Windows Server Insider Preview build 18945, you are also able to run WSL 2 on Windows Server. In this blog post, I am going to show you how you can install the Windows Subsystem for Linux 2 (WSL 2) on Windows Server. The Windows Subsystem for Linux was already available in earlier versions of Windows Server; however, WSL 2 brings a lot of new advantages.

The Windows Subsystem for Linux was in Windows 10 for a while now and allowed you to use different versions of Linux on your Windows 10 machine. With WSL 2, the architecture will change drastically and will bring increased file system performance and full system call compatibility. WSL 2 is now using virtualization technology (based on Hyper-V) and uses a lightweight utility VM on a real Linux kernel. You can find out more about WSL 2 in the release blog or on the Microsoft Docs Page for WSL 2.

Install Windows Subsystem for Linux 2 (WSL 2) on Windows Server

Here is how you can install WSL 2 on Windows Server.

Prerequisites:

After you have installed a new Windows Server with the Windows Server Preview build, you will need to add the following features:

  • Microsoft-Windows-Subsystem-Linux
  • VirtualMachinePlatform

To enable these features, run the following command:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
 
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

These commands will need a restart to complete.

Windows Subsystem for Linux 2 WSL2 on Windows Server

Windows Subsystem for Linux 2 (WSL2) on Windows Server

Now you can install your Linux distribution which is available in WSL. You can also find the links to the Linux distro packages here: WSL distro packages. In my case, I am going to use Ubuntu 18.04, which is currently working with WSL 2.

Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile ~/Ubuntu1804.zip -UseBasicParsing
md C:\Distros\Ubuntu1804
Expand-Archive ~/Ubuntu1804.zip C:\Distros\Ubuntu1894

Before you start and configure your WSL distro, I recommend that you set the WSL default version to 2. This will make the setup of your distro much faster.

wsl --set-default-version 2

Now you can start ubuntu.exe to run WSL.

C:\Distros\Ubuntu1894\ubuntu1804.exe

I hope this gives you a step-by-step guide on how you can install WSL 2 on Windows Server. Remember this is currently in preview, and not for production use. If you want to install the Windows Subsystem for Linux on Windows Server 2019, check out this blog post: Install Windows Subsystem for Linux on Windows Server.



Download the new Windows Terminal Preview

How to open Windows Terminal from Command Prompt or Run

This is a really short blog post and more of a reminder than anything else. You might have seen the new Windows Terminal for Windows 10 was just released in the Windows Store as a preview. However, in the last couple of updates to the Windows Terminal app, it got to a state which already makes it my default terminal. The Windows Terminal allows you to run Windows PowerShell, PowerShell Core and even Bash using the Windows Subsystem for Linux (WSL). Especially the integration of the Azure Cloud Shell is a great plus for me. In this blog post, I am just going to show you how you can open the Windows Terminal from command prompt or Run (WIN + R).

To open Windows Terminal from the command line (cmd) or in Windows Run (WIN +R) type:

wt
Open Windows Terminal start wt

Open Windows Terminal start wt

 

If you want to know more about the Azure Cloud Shell integration, read the blog of Pierre Roman (Microsoft Cloud Advocate) on the ITOpsTalk blog.