Announcing Windows 10 Insider Preview Build 19559 | Windows Experience Blog

Hello Windows Insiders, today we’re releasing Windows 10 Insider Preview Build 19559.1000 to Windows Insiders in the Fast ring.If you want a complete look at what build is in which Insider ring, head over to Flight Hub. You can also check out the rest of our documentation here, including a list of new features and updates.
Not seeing any of the features in this build? Check your Windows Insider Settings to make sure you’re on the Fast ring. Submit feedback here to let us know if things weren’t working the way you expected.

We fixed an issue with the IME candidate window for East Asian IMEs (Simplified Chinese, Traditional Chinese, and the Japanese IME) not opening sometimes on recent builds.
We fixed an issue that could result in explorer.exe crashing when backing out of folders containing .heic or RAW files.
We fixed an issue that could result in explorer.exe hanging when attempting to delete certain large .tif files.
We fixed an issue resulting in the top few pixels of a window getting clipped when using WIN+Up and then snapping the window to the side using WIN+Left/Right).
We fixed an issue resulting in Event Viewer crashing when selecting certain events recently.
For any of our Insiders using an arm64 device, such as the Surface Pro X, running Enterprise or Pro edition, you’ll now be able to see and install Hyper-V features.
We fixed an issue resulting in some Insiders experiencing a green screen in recent builds with error KMODE EXCEPTION NOT HANDLED.

BattlEye and Microsoft have found incompatibility issues due to changes in the operating system between some Insider Preview builds and certain versions of BattlEye anti-cheat software. To safeguard Insiders who might have these versions installed on their PC, we have applied a compatibility hold on these devices from being offered affected builds of Windows Insider Preview. See this article for details.
We are aware Narrator and NVDA users that seek the latest release of Microsoft Edge based on Chromium may experience some difficulty when navigating and reading certain web content. Narrator, NVDA, and the Edge teams are aware of these issues. Users of legacy Microsoft Edge will not be affected. NVAccess has released a beta of NVDA that resolves the known issue with Edge. Further information can also be found in the In Process blog post that goes into more detail about the beta.
We’re looking into reports of the update process hanging for extended periods of time when attempting to install a new build.
We’re investigating reports that some Insiders are unable to update to newer builds with error 0x8007042b.
We’re looking into reports that some Insiders are unable to update to newer builds with error 0xc1900101.
East Asian IMEs (Simplified Chinese, Traditional Chinese, Korean and the Japanese IME) may be missing from the language/keyboard switcher (e.g. opened by Windows key + Space key) after upgrading from 20H1 Build 19041 or lower builds to Windows 10 Insider Preview build (19536 or later) if you have multiple languages/keyboards added. We are investigating the issue. In the meantime, please remove and re-add any keyboards that are missing from the keyboard switcher by going to Settings > Time & Language > Language > Preferred languages. It doesn’t happen if you updated from build19536 or later.
The Documents section under Privacy has a broken icon (just a rectangle).
We’re investigating reports that certain devices are no longer sleeping on idle. We have identified the root cause and are working on a fix for an upcoming flight. If your device is impacted, manually triggering sleep should work (Start > Power button > Sleep).
WSL Issue 4860: Some Insiders are experiencing this error message when using WSL2: A connection attempt failed on Windows. Thank you if you were one of those who reported it on the previous flight—we have a fix ready which will be including in an upcoming flight.
There’s an issue in this build where if you bring up clipboard history (WIN+V) and dismiss it without pasting anything, input in many places will stop working until you reboot your PC. We appreciate your patience.

What Exactly is Azure Dedicated Host?

In this blog post, we’ll become more familiar with a new Azure service called Azure Dedicated Hosts. Microsoft announced the service as preview some time ago and will go general-available with it in the near future.

Microsoft Azure Dedicated Host allows customers to run their virtual machines on a dedicated host not shared with other customers. While in a regular virtual machine scenario different customers or tenants share the same hosts, with Dedicated Host, a customer does no longer share the hardware. The picture below illustrates the setup.

Azure Dedicated Hosts

With a Dedicated Host, Microsoft wants to address customer concerns regarding compliance, security, and regulations, which could come up when running on a shared physical server. In the past, there was only one option to get a dedicated host in Azure. The option was to use very large instances like a D64s v3 VM size. These instances were so large that they consumed one host, and the placement of other VMs was not possible.

To be honest here, with the improvements in machine placement, larger hosts, and with that a much better density, there was no longer a 100% guaranty that the host is still dedicated. Another thing regarding instances is they are extremely expensive, as you can see in the screenshot from the Azure Price Calculator.

Azure price calculator

How to Setup a Dedicated Host in Azure

The setup of a dedicated host is pretty easy. First, you need to create a host group with your preferences for availability, like Availability Zones and Number of Fault Domains. You also need to decide for a Host Region, Group Name, etc.

How To Setup A Dedicated Host In Azure

After you created the host group, you can create a host within the group. Within the current preview, only VM Type Ds3 and Es3 Family are available to choose from. Microsoft will add more options soon.

Create dedicated host

More Details About Pricing

As you can see in the screenshot, Microsoft added the option to use Azure Hybrid Use Benefits for Dedicated Host. That means you can use your on-prem Windows Server and SQL Server licenses with Software Assurance to reduce your costs in Azure.

Azure Hybrid Use Benefits pricing

Azure Dedicated Host also gives you more insides into the host like:

  • The underlying hardware infrastructure (host type)
  • Processor brand, capabilities, and more
  • Number of cores
  • Type and size of the Azure Virtual Machines you want to deploy

An Azure Customer can control all host-level platform maintenance initiated by Azure, like OS updates. An Azure Dedicated Host gives you the option to schedule maintenance windows within 35 days where these updates are applied to your host system. During this self-maintenance window, customers can apply maintenance to hosts at their own convenience.

So looking a bit deeper in that service, Azure becomes more like a traditional hosting provider who gives a customer a very dynamic platform.

The following screenshot shows the current pricing for a Dedicated Host.

Azure Dedicated Host pricing details

Following virtual machine types can be run on a dedicated host.

Virtual Machines on a Dedicated Host

Currently, you have a soft limit from 3000 vCPUs for a dedicated host per region. That limit can be enhanced by submitting a support ticket.

When Would I Use A Dedicated Host?

In most cases, you would choose a dedicated host because of compliance reasons. You may not want to share a host with other customers. Another reason could be that you want a guaranteed CPU architecture and type. If you place your VMs on the same host, then it is guaranteed that it will have the same architecture.

Further Reading

Microsoft already published a lot of documentation and blogs about the topic so you can deepen your knowledge about Dedicated Host.

Resource #1: Announcement Blog and FAQ 

Resource #2: Product Page 

Resource #3: Introduction Video – Azure Friday “An introduction to Azure Dedicated Hosts | Azure Friday”

Go to Original Article
Author: Florian Klaffenbach

What’s new with PowerShell error handling?

Hitting errors — and resolving them — is an inevitable part of working with technology, and PowerShell is no exception.

No one writes perfect code. Your scripts might have a bug or will need to account for when a resource gets disconnected, a service hits a problem, or an input file is badly formatted. Learning how to interpret an error message, discover the root cause and handle the error gracefully is an important part of working with PowerShell. The development team behind the open source version of PowerShell 7 has improved PowerShell error handling both when you run a script and when you enter commands in a shell.

This article walks you through PowerShell error handling in a simple script and introduces several new features in PowerShell 7 that make the process more user-friendly.

How to find PowerShell 7

To start, be sure you have PowerShell 7 installed. This is the latest major release for the tool that had been called PowerShell Core up until the release of version 7. Microsoft still supports the Windows PowerShell 5.1 version but does not plan to give it the new features that the project team develops for open source PowerShell.

PowerShell 7 is available for Windows, Mac and Linux. The latest version can be installed from the PowerShell GitHub page.

On Windows, you can also use PowerShell 7 in the new Windows Terminal application, which offers improvements over the old Windows console host.

Error messages in previous PowerShell versions

A common problem for newcomers to Windows PowerShell 5.1 and the earlier PowerShell Core releases is that when something goes wrong, it’s not clear why.

For example, imagine you want to export a list of local users to a CSV file, but your script contains a typo:

Get-LocalUser |= Export-Csv local_users.csv

This is what you would see when you run the script:

PowerShell error message
Before the PowerShell 7 release, this is the type of error message that would display if there was a typo in a command.

The error code contains critical information — there’s an equals symbol that doesn’t belong — but it can be difficult to find in the wall of red text.

A longtime variable gets new purpose

Did you know that PowerShell has a preference variable called $ErrorView? Perhaps not because until now, it hasn’t been very useful.

The $ErrorView variable determines what information gets sent to the console and how it is formatted when an error occurs. The message can vary if you’re running a script file as opposed to entering a command in the shell.

In previous versions of PowerShell, $ErrorView defaulted to NormalView — this is the source of the wall of red text seen in the previous screenshot.

That all changes with PowerShell 7. There’s a new option for $ErrorView that is now the default called ConciseView.

Errors get clearer formatting in PowerShell 7

When we run the same command with the error in PowerShell 7 with the new default ConciseView, the error message is easier to understand.

ConciseView option
The new ConciseView option reduces the clutter and highlights the error location with a different color.

The new PowerShell error handling highlights the problem area in the command with a different color and does not overload you with too much information.

Let’s fix the typo and continue testing.

Shorter errors in the shell

Another error you might encounter when writing to a CSV is that the target file is locked. For example, it’s possible the file is open in Excel.

If you’re using PowerShell as a shell, the new default ErrorView will now give you just the error message with no extraneous information. You can see the length of the error from Windows PowerShell 5.1 and its NormalView below.

Windows PowerShell error message
The default error message in Windows PowerShell 5.1 provides a lot of information but not in a useful manner.

In contrast, PowerShell error handling in the newest version of the automation tool provides a more succinct message when a problem occurs due to the ConciseView option.

PowerShell 7 error message
The ConciseView option provides a more straightforward error message when a problem with a command occurs.

You can much more easily see that the file is locked and start thinking about fixing the problem.

Learning how to explore error records

We’ve seen how PowerShell 7 improves error messages by providing just the information you need in a more structured manner. But what should you do if you need to dig deeper? Let’s find out by continuing to use this error as an example: “The process cannot access the file … because it is being used by another process.”

Taking the terror out of $Error

Every time PowerShell encounters an error, it’s written to the $Error automatic variable. $Error is an array and the most recent error is $Error[0].

To learn more about the your most recent error in previous versions of PowerShell, you would explore $Error[0] with cmdlets such as Select-Object and Format-List. This type of examination is laborious: You can only expand one property at a time, and it’s easy to miss vital nested information contained in a handful of properties.

For example, look at the output from the command below.

$Error[0] | Select-Object *
$Error automatic variable
The $Error automatic variable in PowerShell before version 7 stored errors but was not flexible enough to give a deeper look at the properties involved.

There’s no way of knowing that a wealth of valuable data lives under the properties Exception and InvocationInfo. The next section shows how to get at this information.

Learning to explore with Get-Error

PowerShell 7 comes with a new cmdlet called Get-Error that gives you a way to survey all the information held within a PowerShell error record.

Run without any arguments, Get-Error simply shows the most recent error, as you can see in the screenshot below.

Get-Error cmdlet output
The new Get-Error cmdlet in PowerShell 7 gives you an easier way to get more information about errors.

You are immediately shown the hierarchy of useful objects and properties nested inside the error record. For example, you can see the Exception property isn’t a dump of information; it contains child properties, some of which have their own children.

If you want to reuse the error message in your code to write it to a log file or the Event Viewer, then you can use the following command to store the message:


Use ErrorVariable to store error records

The Get-Error cmdlet also accepts error records from the pipeline. This is particularly handy if you use the -ErrorVariable common parameter to store errors for later inspection, which you can do with the following code:

# +myErrors means "add error to $myErrors variable"
Get-LocalUser | Export-Csv local_users.csv -ErrorVariable +myErrors
# Inspect the errors with Get-Error
$myErrors | Get-Error

By using Get-Error, you can see that an ErrorVariable holds information somewhat differently than the $Error variable. The error message is present in several places, most simply in a property named Message, as shown in the following screenshot.

ErrorVariable parameter
Using the ErrorVariable parameter gives a more flexible way to log errors rather than using the $Error variable, which saves every error in a session.

Bringing it all together

You’ve now used Get-Error to inspect error records, both from your shell history and from an ErrorVariable, and you’ve seen how to access a property of the error.

The final step is to tie everything together by reusing the property in your script. This example stores errors in $myErrors and writes any error messages out to a file:

Get-LocalUser | Export-Csv local_users.csv -ErrorVariable +myErrors
if ($myErrors) {
$myErrors.Message | Out-File errors.log -Append

If you want to get serious about scripting and automation, then it’s worth investigating the PowerShell error handling now that it got a significant boost in version 7. It’s particularly helpful to store errors to a variable for later investigation or to share with a colleague.

Go to Original Article