ReadMe.txt

Introduction
 
The xPendingReboot module is a part of the Windows PowerShell Desired State Configuration (DSC) Resource Kit, which is a collection of DSC Resources produced by the PowerShell Team. This module contains the xPendingReboot resource. xPendingReboot examines three specific registry locations where a Windows Server might indicate that a reboot is pending and allows DSC to predictably handle the condition. All of the resources in the DSC Resource Kit are provided AS IS, and are not supported through any Microsoft standard support program or service. The "x" in xPendingReboot stands for experimental, which means that these resources will be fix forward and monitored by the module owner(s).
Please leave comments, feature requests, and bug reports in the Q & A tab for this module.
 
If you would like to modify xPendingReboot module, feel free. When modifying, please update the module name, resource friendly name, and MOF class name (instructions below). As specified in the license, you may copy or modify this resource as long as they are used on the Windows Platform.
 
For more information about Windows PowerShell Desired State Configuration, check out the blog posts on the PowerShell Blog (this is a good starting point). There are also great community resources, such as PowerShell.org, or PowerShell Magazine.
  
Installation
 
To install xPendingReboot module
�Unzip the content under $env:ProgramFiles\WindowsPowerShell\Modules folder
 
To confirm installation:
�Run Get-DSCResource to see that xPendingReboot is among the DSC Resources listed
 
Requirements
This module requires the latest version of PowerShell (v4.0, which ships in Windows 8.1 or Windows Server 2012 R2). To easily use PowerShell 4.0 on older operating systems, install WMF 4.0. Please read the installation instructions that are present on both the download page and the release notes for WMF 4.0.
 
Description
The xPendingReboot module examines three specific registry locations where a Windows Server might indicate that a reboot is pending and allows DSC to predictably handle the condition. PowerShell Desired State Configuration determines how to handle pending reboot conditions using the Local Configuration Management setting RebootNodeIfNeeded. When DSC resources require reboot, within a Set statement in a DSC Resource the global variable DSCMachineStatus is set to value �1�. When this condition occurs and RebootNodeIfNeeded is set to �True�, DSC reboots the machine after a successful Set. Otherwise, the reboot is postponed.
 
Scenario
In any case where an external force could impact a machine and DSC needs to gracefully deal with the reboot, xPendingReboot can be leveraged. An example might be a machine that was recently patched. If the DSC configuration includes software installation that requires the machine to not be in a �reboot pending� status, the xPendingReboot resource can be used to make sure DSC checks for this condition and handles it appropriately based on the LCM RebootIfNeeded setting.
 
As a best practice, any resources that require all pending reboots to be cleared before execution can leverage the DependsOn parameter and list xPendingReboot.
 
Details
 
xPendingReboot resource has the following properties:
�Name: REQUIRED parameter that must be unique per instance of the resource within a configuration.
�Read-Only Properties: The three locations that are examined are also set as read-only properties so that details are returned by Get-DSCConfiguration. ComponentBasedServicing, WindowsUpdate, and PendingFileRename.
 
Renaming Requirements
 
When making changes to these resources, we suggest the following practice:
 
1. Update the following names by prefixing your company/community name and replacing the "x" with "c" (short for "Community") or another prefix of your choice:
 
o Module name (ex: xPendingReboot becomes cPendingReboot)
 
o Resource folder (ex: xPendingReboot becomes Contoso_cPendingReboot)
 
o Resource Name (ex: xPendingReboot becomes Contoso_cPendingReboot)
 
2. Update module and metadata information in the module manifest
 
3. Update any configuration that use these resources
 
We reserve resource and module names without prefixes ("x" or "c") for future use (e.g. " xPendingReboot"). If the next version of Windows Server ships with a "PendingReboot" resource, we don't want to break any configurations that use any community modifications. Please keep a prefix such as "c" on all community modifications.
 
Versions
 
0.1.0.0
�Initial release with the following resources
�xPendingReboot
 
 
Example: Identify if reboots are pending and if so, reboot immediately (managed by DSC)
 
This configuration leverages xPendingReboot and sets the LCM setting to allow automatic reboots. (Note that all non-default LCM settings should be included when making any change.)
 
Configuration CheckForPendingReboot
{
    Import-DSCResource -module xPendingReboot
    Node �NodeName�
    {
        xPendingReboot Reboot1
        {
            Name = �BeforeSoftwareInstall�
        }
        LocalConfigurationManager
        {
            RebootNodeIfNeeded = 'True'
        }
    }
}
   
 
 
 
Example: Identify if reboots are pending but do not automatically reboot (managed by DSC)
 
This configuration will install the hotfix from a URI that is connected to a particular hotfix ID.
 
This configuration leverages xPendingReboot and sets the LCM setting to allow automatic reboots. (Note that all non-default LCM settings should be included when making any change.)
 
Configuration CheckForPendingReboot
{
    Import-DSCResource -module xPendingReboot
    Node �NodeName�
    {
        xPendingReboot Reboot1
        {
            Name = �BeforeSoftwareInstall�
        }
        LocalConfigurationManager
        {
            RebootNodeIfNeeded = 'False'
        }
    }
}