What`s New in Windows PowerShell 3.0

Since the release of Windows 7 and Windows Server 2008 R2, Windows PowerShell is included in the operating system and enabled by default. This means Windows PowerShell 3.0 will be available in the next version of Windows.

A preview version for developers of the next Windows version was released a few weeks ago, which means we also got a preview of Windows PowerShell 3.0. The  preview version of the client operating system is available here, while the server version is available on MSDN.

Earlier this week the PowerShell team announced that a Community Technology Preview (CTP 1) is available for download, which means we can also try out PowerShell 3.0 on computers running Windows 7 and Windows Server 2008 R2. The current version of the Windows Management Framework includes Windows PowerShell 2.0, Windows Remote Management (WinRM) 2.0 and Background Intelligent Transfer Service (BITS) 4.0, while the new Windows Management Framework CTP contains Windows PowerShell 3.0, Windows Management Instrumentation (WMI) and Windows Remote Management.

Some of the most important new features in PowerShell 3.0 is listed in the previous mentioned announcement from the PowerShell team, but there is also a huge number of other new features.

A great number of persons in the PowerShell community has already started to discover and write about the new features. One of them is the new Windows PowerShell Web Access in the next version of Windows Server, which Ive previously written an article about.

Instead of listing all the articles Ive discovered so far in this article, I posted them as a TechNet Wiki article as part of the existing PowerShell V3 Guide:

TechNet Wiki: PowerShell V3 Guide
TechNet Wiki: PowerShell V3 Featured articles

I would like to encourage you to contribute to the TechNet Wiki article when you discover new writings about Windows PowerShell 3.0.

Windows PowerShell Web Access

In the Windows Server Developer Preview (“Windows 8 Server”) released recently, a preview version of Windows PowerShell 3.0 is also included. In addition to the many news in the next version of PowerShell which I wont cover in this article is a brand new feature named Windows PowerShell Web Access. As the name indicates this makes it possible to use Windows PowerShell using a browser from a computer, in addition to mobile devices.

Installation, configuration and user experience

Windows PowerShell Web Access is available as a feature in the new Server Manager:

image

After the feature is installed, some additional steps which is described in %systemroot%WebPowerShellWebAccesswwwrootREADME.txt is required:

To complete the installation of Windows PowerShell Web Access, please perform the
following tasks:

1) Open a Windows PowerShell console with elevated user rights.

To do this, right click on PowerShell.exe, or a Windows PowerShell shortcut,
and then click "Run as administrator."

2) Be sure your Windows PowerShell environment is configured to run scripts.

For more information, see "Running Scripts from Within Windows PowerShell"
(http://technet.microsoft.com/en-us/library/ee176949.aspx).

3) Run the following script:

${env:windir}WebPowerShellWebAccesswwwrootsetup.ps1

This is typically C:WindowsWebPowerShellWebAccesswwwrootsetup.ps1

4) Create a server certificate.

For a test server, you can create a self-signed certificate by using the
Web Server (IIS) management console:

(${env:windir}system32inetsrvInetMgr.exe)

From within the IIS management console, open the Web Servers parent node.
This is typically the node immediately under the Start Page node.

In the results pane, select "Server Certificates" on the center pane, then
select "Create Self-Signed Certificate."

5) Create an SSL binding.

In the IIS management console, select "Default Web Site," and then click
"Bindings" on the "Actions" menu. Click "Add," select "https" on
the "Type" pull-down menu, and then in the "SSL certificate" list, select the
certificate that you created in step 4.

For more information about how to create a server certificate and an SSL binding,
see "How to Set Up SSL on IIS 7"
(http://learn.iis.net/page.aspx/144/how-to-set-up-ssl-on-iis-7).

The setup.ps1 script will create a new Web Application Pool and a new Web Application in Internet Information Services:

$ErrorActionPreference = 'stop'

$wwwroot = "${env:windir}WebPowerShellWebAccesswwwroot"

if (!(Test-Path $wwwroot))
{
Write-Error "PowerShell Web Access has not been installed on this machine"
}

#
# Copy localized files to neutral location
#
foreach ($target in ($wwwroot,"$wwwrootbin"))
{
foreach ($culture in ("en","en-us","qps-ploc"))
{
$source = "$target$culture"

        if (Test-Path $source)
{
copy "$source*" $target
}
}
}

#
# Setup ASP.NET application
#
Import-Module WebAdministration

if (Get-WebApplication -name "pswa")
{
Write-Error "The Windows PowerShell Web Access application (pswa) already exists on this machine"
}

New-WebAppPool "pswa"

New-WebApplication -Name "pswa" -Site "Default Web Site" -PhysicalPath $wwwroot -ApplicationPool "pswa"

If the script runs successfully, it returns the following output:

PS C:> C:WindowsWebPowerShellWebAccesswwwrootsetup.ps1

Name                     State        Applications

----                     -----        ------------

pswa                     Started

Path             : /pswa

ApplicationPool  : pswa

EnabledProtocols : http

PhysicalPath     : C:WindowsWebPowerShellWebAccesswwwroot

The final configuration step is to create and add a binding to a certificate as described in the link provided in the readme.txt file.

When done, you can access the feature by using the URL https://<servername>/pswa :

image

Specify credentials and a computer name to connect to, then hit the “Sign in” button. Another connection type available is “Connection URI”:

image

The options available under “Advanced Options”:

image

The available authentication types:

image

After signing in, youll be presented with a console looking like this:

image

The console host is called “ServerRemoteHost”:

image

Tab-completion works just like in the regular Windows PowerShell console host, and we also have access to the history by pressing the up and down arrows. To logoff, there is a Logoff-button in the bottom right corner.

The PowerShell Web Access also works perfectly fine on mobile devices. Ive tried it on a Windows Phone 7 device, but unfortunately I dont have any screen captures to share yet.

Congratulations to the Windows PowerShell team for providing this excellent new feature!

Note: Please be aware that this is a feature in a prerelease version of the next version of Windows Server, and thus the feature might be different in the final product.

Update 15.09.2011

Screen capture from PowerShell Web Access running on an Iphone:

 

 

 

 

 

 

 

 

 
Update 21.03.2012:
With the release of Windows Server 8 beta the configuration steps has changed. After installing the PowerShell Web Access feature you need to install a PSWA Web Application:

Install-PswaWebApplication

By default no authorization rules exist. Here is an example on how to create one that allows access to all computers (*) for the specified username/group:

Add-PswaAuthorizationRule -UserName domainusername -ComputerName * -ConfigurationName microsoft.powershell

Detailed instructions is available in the Deploy Windows PowerShell Web Access article on Microsoft TechNet.