Tag: Windows Powershell

Install or Update PowerShell 6 on Windows 10

How to Install and Update PowerShell 6

Today Windows 10 and Windows Server 2019 ship with Windows PowerShell 5.1 as the default version. PowerShell Core 6 is a new edition of PowerShell that is cross-platform (Windows, macOS, and Linux), open-source, and built for heterogeneous environments and the hybrid cloud. PowerShell 6 today is a side by side version next to Windows PowerShell 5.1. That means on Windows you cannot just upgrade to PowerShell 6, you will need to install it, same as on Linux and macOS. This blog post just shows you how simple you can install PowerShell 6 or update PowerShell 6, if you have already installed it, on Windows 10, Windows Server 2019 or Linux.

Of course you can find great documentation out there on Microsoft Docs. However, Steve Lee (Microsoft Principal Software Engineer Manager in the PowerShell Team) shared some one-liner, which help you easily install and update PowerShell 6.

Install PowerShell Core 6

Before showing you the one-liner option to install PowerShell 6, I want to share with you the documentation to install PowerShell Core 6 on different operating systems like Windows, macOS and Linux.

One-liner to install or update PowerShell 6 on Windows 10

Install or Update PowerShell 6 on Windows 10

You can use this single command in Windows PowerShell to install PowerShell 6.

There are additional parameters to for example install daily builds of the latest PowerShell previews.

The destination path to install PowerShell Core to.

Install PowerShell Core from the daily build.
Note that the ‘PackageManagement’ module is required to install a daily package.

Install latest preview.

Use MSI installer.

Quiet command for the MSI installer.

Do not overwrite the destination folder if it already exists.

On Windows, add the absolute destination path to the ‘User’ scope environment variable ‘Path’;
On Linux, make the symlink ‘/usr/bin/pwsh’ points to “$Destination/pwsh”;
On MacOS, make the symlink ‘/usr/local/bin/pwsh’ points to “$Destination/pwsh”.

For more about installing PowerShell 6 on Windows, check out the Microsoft Docs.

One-liner to install or update PowerShell 6 on Linux

Install or Update PowerShell 6 on Linux

You can use this as a single command to install PowerShell 6 on Linux

Depending on your distro you are using, this will register Microsoft’s pkg repos and install that package (deb or rpm).

For more about installing PowerShell 6 on Linux, or if you want to install PowerShell Core 6 on macOS, check out the Microsoft Docs.

After Installing

After you have installed PowerShell 6, also make sure to update PowerShellGet and the PackageManagement module.

By the way, PowerShell 6 is also used in the PowerShell version of Azure Cloud Shell. You can of course also install the Azure PowerShell module in PowerShell 6.

Updated PowerShellGet and PackageManagment

Update PowerShellGet and PackageManagement

Since I am just setting up a new work machine, I wanted to share some information how you can update PowerShellGet and PackageManagement to the latest version. This will give you the usual bug fixes and performance enhancements. Since you don’t get the latest version in Windows PowerShell nor PowerShell Core, you will need to update it manually.

PowerShellGet is a PowerShell module with commands for discovering, installing, updating and publishing the PowerShell artifacts like Modules, DSC Resources, Role Capabilities and Scripts. For example you use PowerShellGet to install the Azure PowerShell module, or other modules.

PowerShellGet module is also integrated with the PackageManagement module as a provider, users can also use the PowerShell PackageManagement cmdlets for discovering, installing and updating the PowerShell artifacts like Modules and Scripts.

(source: GitHub)

How to update PowerShellGet and PackageManagement

Updating to the latest version of PowerShellGet and the PackageManagement module is simple. Since both modules are part of the PowerShell Gallery, you can update them using a couple of simple commands.

You can find both modules in the PowerShell Gallery:

First lets check which versions of the modules you have available. If you use Update-Module, it will automatically load PowerShellGet and PackageManagement and list them as loaded PowerShell modules. Of course you can also use Get-Module -ListAvailable.

PowerShell Modules PowerShellGet and PackageManagement

As you can see, In my default installation, I got PowerShellGet version 1.6.7 and PackageManagement If you have a look at PSGallery, you will see that these are pretty old versions and that there are newer available.

To get the latest version from PowerShell Gallery, you should first install the latest Nuget provider. You will need to run PowerShell as an Administrator for all  the following commands.

If you run PowerShell 5.0 or newer, you can install the latest PowerShellGet using the following command. PowerShell 5.0 is included in Windows 10, Windows Server 2016, Windows Server 2019, any system with WMF 5.0 and 5.1 or a system running PowerShell 6.

Two quick tips, first of, you will need to set the execution policy to RemoteSigned to allow the new module to run. Secondly in some cases you will need to use the -AllowClobber parameter to install the updated version of the module.

You can then use Update-Module to get newer versions:

Updated PowerShellGet and PackageManagment

After that you will see the latest versions of PowerShellGet and PackageMangement available

If you run older versions of PowerShell you can check out the full documention on the PowerShell Docs. I hope this blog post helps you to update PowerShellGet and benefit from the latest versions. If you have any questions, please let me know in the comments.


Windows and PowerShell support for SSH

One of the biggest request Microsoft got from customers in terms of PowerShell was that customers want to use Secure Shell protocol and Shell session (aka SSH) to interoperate between Windows and Linux – both Linux connecting to and managing Windows via SSH and Windows connecting to and managing Linux via SSH.

Yesterday Angel Calvo, Group Software Engineering Manager in the PowerShell Team at Microsoft, finally announced that the PowerShell team is going to work, contribute and support the OpenSSH community. This will allow Microsoft to bring SSH (Secure Shell) support for PowerShell in the coming releases. For me connecting from Windows to Linux systems will be a great benefit and helps me manage some of my Azure Virtual Machines from my Surface without having to install any third party tools.

If you want to know more about that check out his Looking Forward: Microsoft: Support for Secure Shell (SSH)




Get name of the PowerShell script file inside the script

When you create a script you sometimes want to create some output for a log file for example. In many cases it makes sense to use the script file name for the log file so you can easily see from which .ps1 the .log file was generated for example. To get the name of the PowerShell ps1. file you can use the following command:

This will return the ps1. file object. To get only the name string you could use:

To create a log file with the script file name you could use the following commands:

Install Sysinternals from PowerShell

More about PowerShell OneGet

As already posted and as you can see on my blog, I really like the new feature called OneGet. With the Windows Management Framework 5.0 Preview, Microsoft released a new PowerShell module which is called OneGet.

OneGet is a new way to discover and install software packages from around the web. The way how this works is that you can connect to repositories around the web or you can just add new repositories by your self for example for internal use. In the preview you have the Chocolatey repository connected. I am pretty sure Microsoft will also add some own repositories to the list, so you can install Microsoft software and packages from a trusted source.

You can get all the different repositories with the Get-PackageSource cmdlet.


You can than list all the packages available for you by using Find-Package, or you could use it to find a specific package.


If you have found the right package you can also see all the versions available by using the Find-Package <Package> -AllVersions cmdlet.

Find Package Versions

You can now install the version you need or you can just use the Install-Package cmdlet to install the latest available version.

OneGet PowerShell

After you have installed packages you can of course list them by using the Get-Package cmdlet or uninstall a package by using Uninstall-Package.

But this is not everything, another great thing about OneGet is that it can be integrated in PowerShell Desired State Configuration (DSC). So think about it for a moment, you can now create simple server configurations with DSC and you don’t have to think about software repositories at all, OneGet does handle this for you.

By the way, Garrett Serack (Senior Open Source Software Developer at Microsoft) also pointed out to me that OneGet also has a place on the Microsoft Open Source Software site CodePlex.



Install Sysinternals from PowerShell

Install Sysinternals from PowerShell via OneGet

Microsoft just announced the Windows Management Framework 5.0 Preview. The Windows Management Framework V5 preview adds some cool new feature called OneGet.

OneGet is a new way to discover and install software packages from around the web. With OneGet, you can:
  • Manage a list of software repositories in which packages can be searched, acquired, and installed
  • Search and filter your repositories to find the packages you need
  • Seamlessly install and uninstall packages from one or more repositories with a single PowerShell command

As I did some tests this is perfect to install new software packages very easily. So I started with one of my favorite tools called Sysinternals Suite.

Install Sysinternals from PowerShell

First I have check if there was a Sys internals Package available by using:

This checks online from different sources if there is a package available. After that I installed the package by using:

So this is really easy and guess what, it does not just work for Microsoft Software, there is a lot more of third party Software which can be installed with OneGet. So make sure you checkout the Windows Management Framework 5.0 Preview to get the new OneGet cmdlets.


OneGet PowerShell

Windows Management Framework V5 Preview

I know there is a lot of cool stuff going on right now and Microsoft announced a lot of new things. Like Windows Phone 8.1, Cortana, Windows 8.1 Update, Visual Studio 2013 Update 2, Windows Universal Apps, the Nokia Lumia 630, 635 and 930 and much much more. But there just was another announcement from Jeffrey Snover which is really interesting for us automation and management guys. Today Microsoft announced the Windows Management Framework 5.0 Preview, which brings some new stuff to PowerShell and PowerShell Desired State Configuration (DSC).

In the release 5.0 of the Windows Management Framework Microsoft did some work on DSC to make it more stable and reliable by addressing bug fixes, performance improvements and general optimizations. But there are coming the new feature to Windows PowerShell.

Windows PowerShell OneGet

OneGet is a new way to discover and install software packages from around the web. With OneGet, you can:
  • Manage a list of software repositories in which packages can be searched, acquired, and installed
  • Search and filter your repositories to find the packages you need
  • Seamlessly install and uninstall packages from one or more repositories with a single PowerShell command

Network Switches

Microsoft will offere a new PowerShell module which brings the possibility to manage Network Switches. In this release Microsoft added a set of L2 Layer NetworkSwitch management PowerShell cmdlets to manage Certified for Windows network switches. This effort was part of the Data Center Abstraction (DAL) vision which was led by Microsoft working closely with industry leaders in this space such as: Arista, Cisco and Huawei. Using Windows Server 2012 R2, network switches that pass the Certified for Windows program can now be managed natively by System Center Virtual Machine Manager 2012 R2 (SCVMM) without the need to write custom plugins.

I think this is not just a small announcement, this is a pretty big one to me.

Get more Information on the Windows Server Blog about the Windows Management Framework V5 Preview.