In the first post of this series I highlighted that with Windows Server 2016 there are some feature differences between the Standard and the Enterprise Editions that might get lost in some of the messaging, so in this series of posts I’m going to be highlighting the feature set of Windows Server 2016 Standard, and will include information from a few different resources, but the primary one is the Windows Server 2016 Technical Preview 5 Feature Comparison. As mentioned in the first post of the series, these will focus on what’s new from a Windows Server 2012 R2 perspective, rather than Windows Server 2008 R2 or Windows Server 2012 perspective. I will focus on those later if needed.
Following on from the previous post in the series, which was on High Availability, today’s topic is Management And Automation, and following you will find the information from the Feature Comparison Guide.
Please note that these are subject to change and are based on Windows Server 2016 Technical Preview 5. If any adjustments need to be made, please leave a comment.
Management and Automation
In order to reap the benefits of a modern platform for running datacenter workloads, it is imperative that capable, scalable, automation-friendly management features are built in. This allows for not only core management and automation to occur, but also allows enterprise tools and utilities to extend and expand these management capabilities.
Windows PowerShell 5.1
Windows PowerShell 5.1 Overview
Windows PowerShell 5.1 includes significant new features that extend its use, improve its usability, and allow you to control and manage Windows-based environments more easily and comprehensively. PowerShell 5 enables remote management and configuration of Nano Server. PowerShell 5.1 has addded key features to support DevOps, such as Desired State Configuration (DSC), ISE improvements, writing Classes in PowerShell, the Pester test harness, and remote PowerShell debugging.
Windows PowerShell 5.1 is backward-compatible. Cmdlets, providers, modules, snap-ins, scripts, functions, and profiles that were designed for Windows PowerShell 4.0, Windows PowerShell 3.0, and Windows PowerShell 2.0 generally work in Windows PowerShell 5.1 without changes.
Windows PowerShell 5.1 is installed by default on Windows Server® 2016 and Windows 10®. All features of Windows PowerShell 5.1 may be added to Windows 7, Windows Server 2008 R2, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2 by installing the Windows Management Framework (WMF) 5.1.
PowerShell 5 makes writing DSC Resources and configurations significantly easier:
- Windows PowerShell 5 enables defining DSC resources using classes which reduces the work required to develop new DSC Resources.
- A user can now run a resource under a specified set of credentials by adding the PSDscRunAsCredential attribute to a Node block.
- Composite Configurations enable combining multiple steps within a configuration into a separate new DSC resource.
- A new parameter, ThrottleLimit, has been added to cmdlets in the PSDesiredStateConfiguration module.
- Cross-computer synchronization is new in DSC configurations in Windows PowerShell 5.1. By using the built-in WaitFor* commands provides support for dependencies across multiple computers.
Configuration and control of DSC has been added for the Pull Server:
- The DSC pull server is now configurable to support multiple servers as a role, and to allow separation of the configuration and DSC resource repositories from the centralized reporting server.
- With centralized DSC error reporting, rich error information is not only logged in the event log, but it can be sent to a central location for later analysis. You can use this central location to store DSC configuration errors that have occurred for any server in their environment.
Users can now control the DSC processing engine known as the Local Configuration Manager (LCM):
- The DSCLocalConfigurationManager attribute allows configuring the LCM from within a DSC configuration.
- LCM can assemble the configuration for a node from multiple fragments, called Partial Configurations, enabling separate update and maintenance of parts of the system state, and the LCM refresh interval.
- The Get-DSCLocalConfigurationManager cmdlet returns the current state of the LCM as Idle, Busy, Pending Reboot, or PendingConfiguration.
Improvements to Windows PowerShell ISE ease DSC resource authoring. You can now do the following:
- List all DSC resources within a configuration or node block by entering Ctrl+Space on a blank line within the block.
- Automatic completion on resource properties of the enumeration type.
- Automatic completion on the DependsOn property of DSC resources, based on other resource instances in the configuration.
- Improved tab completion of resource property values.
The PowerShell ISE editor has these enhancements:
- You can now edit remote Windows PowerShell scripts and files in a local copy of Windows PowerShell ISE, by running Enter-PSSession to start a remote session on the computer that’s storing the files you want to edit, and then running PSEdit <path and file name on the remote computer>. This feature eases editing Windows PowerShell files that are stored on the Server Core installation option of Windows Server, where Windows PowerShell ISE cannot run.
- The Start-Transcript cmdlet is now supported in Windows PowerShell ISE.
- You can now debug remote scripts in Windows PowerShell ISE.
- A new menu command, Break All (Ctrl+B), breaks into the debugger for both local and remotely-running scripts.
Pester Test Framework
Pester is a test automation framework specifically designed for use with PowerShell scripts and code. Developed initially as an open source project, Pester is now built into Windows Server 2016 and Windows 10.
It offers these benefits:
- Pester allows for the development of a standard set of tests for PowerShell code
- Pester supports the automatic execution of tests when PowerShell code is written to the framework.
- Eases adding PowerShell scripts, DSC Resources, and DSC Configurations into a CI/CD pipeline.
Package Management and PowerShellGet
Package Management cmdlets provide a single approach to discover, install, and manage a a range of installer technologies, which aids deployment within a CI/CD pipeline.
- On Nano Server, Package Management enables installation of applicable Server Roles and solutions
- Related PowerShellGet cmdlets enable locating, inspecting, and installing PowerShell code from the PowerShell Gallery, the PowerShell code sharing site hosted by Microsoft.
- PowerShellGet cmdlets support automatically installing dependent modules from the PowerShell Gallery.
- PowerShell 5 supports multiple versions of the same PowerShell module or DSC resource installed side-by-side.
Develop using Classes
Starting in Windows PowerShell 5.1, you can develop by using classes, by using formal syntax and semantics that are similar to other object-oriented programming languages. Class, Enum, and other keywords have been added to the Windows PowerShell language to support the new feature.
New PowerShell Cmdlets
Windows PowerShell 5 adds a number of new cmdlets requested by the community, including:
- ConvertFrom-String was developed in collaboration with Microsoft Research, and lets you extract and parse structured objects from the content of text strings. For more information, run Get-Help ConvertFrom-String.
- New cmdlets in the Microsoft.PowerShell.Utility module, Get-Runspace, Debug-Runspace, Get-RunspaceDebug, Enable-RunspaceDebug, and Disable-RunspaceDebug, let you set debug options on a runspace, and start and stop debugging on a runspace.
- The new Compress-Archive and Expand-Archive cmdlets ease working with ZIP files.
- Get-Clipboard/Set-Clipboard allow scripting access to the Windows clipboard.
- A new cmdlet, Clear-RecycleBin, has been added to the Microsoft.PowerShell.Management module; this cmdlet empties the Recycle Bin for a fixed drive, which includes external drives.
- A new cmdlet, New-TemporaryFile, lets you create a temporary file as part of scripting. By default, the new temporary file is created in C:\Users\<user name>\AppData\Local\Temp.
Additional parameters and capabilities have been added to cmdlets to make them easier to use:
- Out-File, Add-Content, and Set-Content cmdlets have a new –NoNewline parameter, which omits a new line after the output.
- Get-ChildItem now includes the –Depth parameter. Used in conjunction with the –RecurseNUMA parameter, it allows users to control how many levels a recursive action should go.
- Copy-Item now lets you copy files or folders from one Windows PowerShell session to another, meaning that you can copy files to sessions that are connected to remote computers, (including computers that are running Windows Nano Server, and thus have no other interface).
- Results of the Get-Command cmdlet now display a Version column, to show support having multiple versions of the same module installed.
PowerShell 5.1 Security Features
There are several new security features included in PowerShell v5 security features. These include: Script block logging, Antimalware Integration, Constrained PowerShell and transcript logging.
PowerShell 5.1 is also available for install on previous operating systems starting from Windows Server 2008 R2 and on.
Server Management Tools
Web-based GUI and command line tools hosted in Azure. Especially useful when managing headless servers such as Nano Server and Server Core. Can be used to manage on-premises infrastructure alongside Azure resources.
- View and change system configuration.
- View performance across various resources and manage processes and services.
- Manage devices attached to the server.
- View event logs.
- View the list of installed roles and features.
- Use a PowerShell console to manage and automate.
Management Packs for Windows Server 2016 roles
System Center Operations Manager Management Packs updated for Windows Server 2016 roles: Windows Server 2016 OS, Nano Server, DNS, DHCP, Failover Clustering, NLB, Print Services, IIS, AD DS, DTC Transactions, Windows Defender, Windows Server Essentials, AD RMS, Branch Cache, File and iSCSI Services.
The console host is the underlying code that supports all character-mode applications including the Windows command prompt, the Windows PowerShell prompt, and others has been updated to include several new editing and marking behaviors.