Giter VIP home page Giter VIP logo

puppet-windowsfeature's Introduction

puppet-windowsfeature

License Build Status Code Coverage Puppet Forge Puppet Forge - downloads Puppet Forge - endorsement Puppet Forge - scores

Table of Contents

  1. Overview
  2. Module Description - What the module does and why it is useful
  3. Setup - The basics of getting started with windowsfeature
  4. Usage - Configuration options and additional functionality
  5. Reference - An under-the-hood peek at what the module is doing and how
  6. Limitations - OS compatibility, etc.
  7. Development - Guide for contributing to the module

Overview

The windowsfeature module allows you to install/remove windows features.

Module Description

The windowsfeature module introduces a new windowsfeature type uses the ServerManager API that comes with Windows Server 2008 R2 onward to add/remove Windows features.

For a list of the windows features you can install, please visit this technet article

Setup

What windowsfeature affects

  • Installs windows features (and optionally corresponding tools)

Setup Requirements

  • windowsfeature makes use of Powershell so you will need to have at least version 2.0 installed in order to use this module.

Usage

To install a single windows feature such as .NET 3.5:

windowsfeature { 'NET-Framework-Core':
  ensure => present,
}

To install several windows features as part of a large application such IIS:

$iis_features = ['Web-Server','Web-WebServer','Web-Asp-Net45','Web-ISAPI-Ext','Web-ISAPI-Filter','NET-Framework-45-ASPNET','WAS-NET-Environment','Web-Http-Redirect','Web-Filtering','Web-Mgmt-Console','Web-Mgmt-Tools']

windowsfeature { $iis_features:
  ensure => present,
}

To install any associated management tools:

windowsfeature { 'Web-WebServer':
  ensure                 => present,
  installmanagementtools => true,
}

To install all subfeatures without having to list them all out:

windowsfeature { 'Web-WebServer':
  ensure             => present,
  installsubfeatures => true,
}

To install a feature and reboot if one is pending:

windowsfeature { 'RDS-RD-Server':
  ensure  => present,
}

reboot {'after_RDS_RD_Server':
  when  => pending,
  subscribe => Windowsfeature['RDS-RD-Server'],
}

DEPRECATION NOTICE: The restart parameter has been deprecated in favor of the puppetlabs reboot module ( https://github.com/puppetlabs/puppetlabs-reboot ). This parameter will be removed in the next release.

Reference

Types

Parameters are optional unless otherwise noted.

windowsfeature

ensure

Specifies whether the feature should be present. Valid options: 'present', 'installed' and 'absent'.

Default: 'present'.

name

Required.

The name of the feature you want to manage.

installmanagementtools

Specifies that all applicable management tools of the roles, role services, or features specified by the Name parameter should be installed. Note: Although management tools are installed by default when you are installing features by using the UI, management tools are not installed by default when you install features by using the Install-WindowsFeature cmdlet; this parameter must be added to install management tools.

installsubfeatures

Specifies that all subordinate role services, and all subfeatures of parent roles, role services, or features specified by the Name parameter should be installed.

restart

Specifies that the target system is restarted automatically, if a restart is required by the installation process for the specified roles or features.

source

Specify the location of an installation source. The source must be from the exact same version of Windows for the reinstallation to work. Without this parameter, PowerShell will use Windows Update by default to look for an installation source

Upgrading from 1.0.1 Release

Previously, the windows features were managed by individual execs:

exec { "add-feature-${title}":
  command  => "Import-Module ServerManager; ${command} ${features} ${_installmanagementtools} ${_installsubfeatures} ${_installsource} -Restart:$${_restart}",
  onlyif   => "Import-Module ServerManager; if (@(Get-WindowsFeature ${features} | ?{\$_.Installed -match \'false\'}).count -eq 0) { exit 1 }",
  provider => powershell,
  timeout  => $timeout,
}

This lead to long execution times when managing a large amount of features, even after features were installed, as the Powershell would have to run the onlyif command for every check.

The new 2.0.0 release uses native types and providers, which speeds up the time as it can just compare the resources on the machine with the results from Get-WindowsFeature.

For example, enabling all the Windows features for a standard IIS setuo after features are installed (ie. an idempotent run):

1.0.0 release:

win-2012R2-std 01:29:30$ puppet apply --verbose --detailed-exitcodes C:\Windows\Temp\apply_manifest.pp.8276
  Info: Loading facts
  Notice: Compiled catalog for win-2012r2-std.home in environment production in 0.44 seconds
  Info: Applying configuration version '1464136176'
  Notice: Finished catalog run in 15.30 seconds
win-2012R2-std 01:29:30$ puppet apply --verbose --detailed-exitcodes C:\Windows\Temp\apply_manifest.pp.8276
  Info: Loading facts
  Notice: Compiled catalog for win-2012r2-std.home in environment production in 0.44 seconds
  Info: Applying configuration version '1464136176'
  Notice: Finished catalog run in 3.34 seconds

So that's a third of the original runs time! And this would only increase with larger amounts of features, as the more features to check, the longer it would take.

Another benefit is this module now has less dependancies on other modules, as it's all native to the module now.

Limitations

This module is tested on the following platforms:

  • Windows 2008 R2
  • Windows 2012
  • Windows 2012 R2
  • Windows 2016

It is tested with the OSS version of Puppet only.

Known issues

  • Specifying installmanagementtools and/or installsubfeatures when a feature is already installed will not install said management tools or sub features.

Contributing

Please read CONTRIBUTING.md for full details on contributing to this project.

puppet-windowsfeature's People

Contributors

alexjfisher avatar bastelfreak avatar dhoppe avatar ekohl avatar eputnam avatar glennsarti avatar hunner avatar igalic avatar juniorsysadmin avatar jyaworski avatar kenyon avatar liamjbennett avatar llowder avatar matthewrstone avatar maxadamo avatar nibalizer avatar petems avatar rnelson0 avatar sandra-thieme avatar shoekstra avatar silug avatar spartanaco avatar stack72 avatar tracyde avatar tragiccode avatar trevor-vaughan avatar vinzent avatar wyardley avatar x89 avatar zilchms avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

puppet-windowsfeature's Issues

feature_name errors with arrays

I've tried several attempts to get the feature_name attribute to accept an array, but even using the 'IIS' example straight from the Puppet forge documentation I get the following error : -

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Unknown function suffix at /etc/puppetlabs/puppet/modules/windowsfeature/manifests/in
it.pp:93 on node hxb30237.hiscox.nonprod
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

This is when using Puppet Enterprise 3.2 and the agent is running on a Windows Server 2012 R2

Here are the examples I have tried : -

  windowsfeature { 'PowerShell':
    ensure       => present,
    feature_name => [
      'PowerShellRoot',
      'PowerShell',
      'PowerShell-V2',
      'PowerShell-ISE',
    ],
    require => windowsfeature['NET-Framework-Core'],
  }
  windowsfeature { 'Test':
    feature_name => [
      'PowerShellRoot',
      'PowerShell',
      'PowerShell-V2',
      'PowerShell-ISE'
    ]
  }
  windowsfeature { 'IIS':
    feature_name => [
      'Web-Server',
      'Web-WebServer',
      'Web-Asp-Net45',
      'Web-ISAPI-Ext',
      'Web-ISAPI-Filter',
      'NET-Framework-45-ASPNET',
      'WAS-NET-Environment',
      'Web-Http-Redirect',
      'Web-Filtering',
      'Web-Mgmt-Console',
      'Web-Mgmt-Tools'
    ]
  }

Line 93:

$escaped = join(prefix(suffix($feature_name,'''),'''),',')

Dependencies are covered:

puppetlabs-stdlib (v3.2.0)
puppetlabs-powershell (v1.0.3)

Ensure no longer defaults to present in v2.x - Nothing to manage: no ensure and the resource doesn't exist

Affected Puppet, Ruby, OS and module versions/distributions

  • Puppet: 4.7.0
  • Ruby: 2.1.9
  • Distribution: Installed from forge. Windows Server 2012 R2
  • Module version: 2.0.0

How to reproduce (e.g Puppet code you use)

 windowsfeature { 'Web-WebServer':
    installmanagementtools => true,
  }

What are you seeing

Debug: Executing: 'C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe Get-WindowsFeature | ConvertTo-JSON'
Debug: /Stage[main]/Windowsfeature[Web-WebServer]: Nothing to manage: no ensure and the resource doesn't exist

What behaviour did you expect instead

Hoping that it would install the feature.

However, explicitly adding ensure => present does work.

 windowsfeature { 'Web-WebServer':
    ensure => present,
    installmanagementtools => true,
  }
Notice: /Stage[main]/Windowsfeature[Web-WebServer]/ensure: created

Any additional information you'd like to impart

Typically ensure has a default value of present.

migrate module to use pwshlib

To better optimize this provider and minimize creation/destruction of powershell processes, this should use the pwshlib module.

Invalid resource type windowsfeature

On Windows 2008 R2 and 2012 R2 I consistently get the error message per the below example

I am a Puppet beginner so I may have made an obvious error.
First, I installed Puppet via Chocolatey
Then I installed your module; puppet module install opentable-windows_feature
Then I ran this example .pp file (code is from your Readme)

Example:

PS C:\Users\Administrator> puppet apply .\01.pp
Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type windowsfeature at C:/Users/A
dministrator/01.pp:1 on node win-cfjnt5scd6c.fritz.box
Wrapped exception:
Invalid resource type windowsfeature
Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type windowsfeature at C:/Users/A
dministrator/01.pp:1 on node win-cfjnt5scd6c.fritz.box
PS C:\Users\Administrator> type .\01.pp
windowsfeature { 'NET-Framework-Core': }
PS C:\Users\Administrator>

Tag for approved version?

I may be missing something, but I don't see a tag for version 1.0.0. Is there one, or could one be created?

Support for Windows Capabilities

Would you consider adding *-WindowsCapability cmdlet support to the windowsfeature type/provider?

It looks like those cmdlets were available starting from Server 2016 based on https://docs.microsoft.com/en-us/powershell/module/dism/get-windowscapability?view=windowsserver2016-ps and https://docs.microsoft.com/en-us/powershell/module/dism/add-windowscapability?view=windowsserver2016-ps

Affected Puppet, Ruby, OS and module versions/distributions

  • Puppet: 7.8.0
  • Ruby: 2.7.3
  • Distribution: Windows Server 2019 Standard
  • Module version: 3.2.2

How to reproduce (e.g Puppet code you use)

As a user, I'd like to be able to apply the puppet code below, so that I can use this module to install Windows Capabilities.

Example:

windowsfeature { 'OpenSSH.Server~~~~0.0.1.0':
  ensure => present,
}

What are you seeing

The module is currently unable to ensure the windows capability.

What behaviour did you expect instead

To install the desired Windows Capability.

Output log

PS C:\Users\Administrator> puppet resource windowsfeature OpenSSH.Client~~~~0.0.1.0
windowsfeature { 'OpenSSH.Client~~~~0.0.1.0':
  ensure   => 'absent',
  provider => default,
}

PS C:\Users\Administrator> puppet apply -e "windowsfeature { 'OpenSSH.Server~~~~0.0.1.0': ensure => present, }"
Notice: Compiled catalog for localhost in environment production in 0.10 seconds
Error: Execution of 'C:\Windows\system32\WindowsPowershell\v1.0\powershell.exe Import-Module ServerManager; Install-WindowsFeature OpenSSH.Server~~~~0.0.1.0' returned 1: Install-WindowsFeature : ArgumentNotValid: The role, role service, or feature name is not valid:
'OpenSSH.Server~~~~0.0.1.0'. The name was not found.
At line:1 char:30
+ ... odule ServerManager; Install-WindowsFeature OpenSSH.Server~~~~0.0.1.0
+                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (OpenSSH.Server~~~~0.0.1.0:String) [Install-WindowsFeature], Exception
    + FullyQualifiedErrorId : NameDoesNotExist,Microsoft.Windows.ServerManager.Commands.AddWindowsFeatureCommand

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
False   No             InvalidArgs    {}
Error: /Stage[main]/Main/Windowsfeature[OpenSSH.Server~~~~0.0.1.0]/ensure: change from 'absent' to 'present' failed: Execution of 'C:\Windows\system32\WindowsPowershell\v1.0\powershell.exe Import-Module ServerManager; Install-WindowsFeature OpenSSH.Server~~~~0.0.1.0' returned 1: Install-WindowsFeature : ArgumentNotValid: The role, role service, or feature name is not valid:
'OpenSSH.Server~~~~0.0.1.0'. The name was not found.
At line:1 char:30
+ ... odule ServerManager; Install-WindowsFeature OpenSSH.Server~~~~0.0.1.0
+                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (OpenSSH.Server~~~~0.0.1.0:String) [Install-WindowsFeature], Exception
    + FullyQualifiedErrorId : NameDoesNotExist,Microsoft.Windows.ServerManager.Commands.AddWindowsFeatureCommand

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
False   No             InvalidArgs    {}
Notice: Applied catalog in 1.40 seconds

Any additional information you'd like to impart

I might be able to help work on this in my spare time, but wanted to see if you were open to adding this feature to the module first.

Thanks!

2008R2 all windowsfeature resources showing as absent.

Affected Puppet, Ruby, OS and module versions/distributions

  • Puppet: 3.6.0
  • Ruby: 1.9.3p484 (2013-11-22) [i386-mingw32]
  • Distribution: Windows 6.1 2008R2
  • Module version: 2.0.0

How to reproduce (e.g Puppet code you use)

windowsfeature { 'SNMP-Service' :
    ensure => present,
  }
  windowsfeature { 'SNMP-WMI-Provider' :
    ensure => present,
  }
  windowsfeature { 'Telnet-Client' :
    ensure => present,
  } 

What are you seeing

PS C:\Users\Administrator> puppet resource windowsfeature --debug --verbose --trace
Debug: Executing 'C:\Windows\sysnative\WindowsPowershell\v1.0\powershell.exe Get-WindowsFeature | ConvertTo-JSON'
windowsfeature { 'ad-certificate':
  ensure => 'absent',
}
windowsfeature { 'ad-domain-services':
  ensure => 'absent',
}
windowsfeature { 'ad-federation-services':
  ensure => 'absent',
}
windowsfeature { 'adcs-cert-authority':
  ensure => 'absent',
}
windowsfeature { 'adcs-device-enrollment':
  ensure => 'absent',
}
windowsfeature { 'adcs-enroll-web-pol':
  ensure => 'absent',
}

...

}
windowsfeature { 'wireless-networking':
  ensure => 'absent',
}
windowsfeature { 'wsrm':
  ensure => 'absent',
}
windowsfeature { 'xps-viewer':
  ensure => 'absent',
}

Output is truncated but each windowsfeature shows as absent. Specifically setting the following in puppet code:

 windowsfeature { 'SNMP-Service' :
    ensure => present,
  }
  windowsfeature { 'SNMP-WMI-Provider' :
    ensure => present,
  }
  windowsfeature { 'Telnet-Client' :
    ensure => present,
  }

But after a puppet run, the resources still show as absent even though they are turned on:

windowsfeature { 'telnet-client':
  ensure => 'absent',
}
windowsfeature { 'snmp-services':
  ensure => 'absent',
}
windowsfeature { 'snmp-wmi-provider':
  ensure => 'absent',
}

What behaviour did you expect instead

Expected windowsfeature to turn on the features on a server's first puppet run and for Get-WindowsFeature | ConvertTo-JSON to show the features as turned on.

Output log

Pertinent puppet agent -t --debug output:

Debug: Prefetching default resources for windowsfeature
Debug: Executing 'C:\Windows\sysnative\WindowsPowershell\v1.0\powershell.exe Get-WindowsFeature | ConvertTo-JSON'
Debug: Executing 'C:\Windows\sysnative\WindowsPowershell\v1.0\powershell.exe Import-Module ServerManager; Add-WindowsFeature Telnet-Client'
Notice: /Stage[main]/Win_snmp/Windowsfeature[Telnet-Client]/ensure: created
Debug: /Stage[main]/Win_snmp/Windowsfeature[Telnet-Client]: The container Class[Win_snmp] will propagate my refresh event
Debug: Executing 'C:\Windows\sysnative\WindowsPowershell\v1.0\powershell.exe Import-Module ServerManager; Add-WindowsFeature SNMP-WMI-Provider'
Notice: /Stage[main]/Win_snmp/Windowsfeature[SNMP-WMI-Provider]/ensure: created
Debug: /Stage[main]/Win_snmp/Windowsfeature[SNMP-WMI-Provider]: The container Class[Win_snmp] will propagate my refresh event
Debug: Executing 'C:\Windows\sysnative\WindowsPowershell\v1.0\powershell.exe Import-Module ServerManager; Add-WindowsFeature SNMP-Service'
Notice: /Stage[main]/Win_snmp/Windowsfeature[SNMP-Service]/ensure: created
Debug: /Stage[main]/Win_snmp/Windowsfeature[SNMP-Service]: The container Class[Win_snmp] will propagate my refresh event
Debug: Class[Win_snmp]: The container Stage[main] will propagate my refresh event

Any additional information you'd like to impart

Features which install/require .Net 3.5 on Windows 2012 R2 will fail (example Web-Webserver)

Per https://p0w3rsh3ll.wordpress.com/2014/10/09/fix-the-infamous-0x800f0906-or-the-source-files-could-not-be-downloaded-error/

This can be reproduced on systems which have the 2966827/2966828 updates installed as per the article, by using windowsfeature to install Web-Webserver with installsubfeatures => true.

The workaround is to specify individual features for the role, however it's worth flagging to avoid unnecessary troubleshooting.

Windowsfeature gives Corrective change every time

Affected Puppet, Ruby, OS and module versions/distributions

  • Puppet: v2017.3.2
  • Ruby:
  • Distribution:
  • Module version: 3.1.0

Hi,

This may be a noob question as we are just starting to use Puppet to manage Windows machines. As we are building roles we are planning to use the module Windowsfeature.
However, the module changes the machine everytime instead of checking first if it is necessary. This causes a incorrect report on the server as nothing was changed but still a corrective change is showed in the report. Is this by default or should i wrap some code around it to check? (which defeats the purpose of using this module instead of powershell code).

Regards,
Wessel

How to reproduce (e.g Puppet code you use)

windowsfeature { 'Web-Http-Redirect':
ensure => present,
}

What are you seeing

In report: Windowsfeature['Web-Http-Redirect'] created Corrective change absent present

What behaviour did you expect instead

The feature was already installed last run, so i don't expect a corrective change.

Output log

Debug: Executing: 'C:\Windows\system32\WindowsPowershell\v1.0\powershell.exe Ins
tall-WindowsFeature 'Web-Http-Redirect''
Debug: Powershell create response was '
Success Restart Needed Exit Code Feature Result


True No NoChangeNeeded {}

'
Notice: /Stage[main]/Profile::Front_end_webserver/Windowsfeature['Web-Http-Redir
ect']/ensure: created
Debug: /Stage[main]/Profile::Front_end_webserver/Windowsfeature['Web-Http-Redire
ct']: The container Class[Profile::Front_end_webserver] will propagate my refres
h event
Debug: Class[Profile::Front_end_webserver]: The container Stage[main] will propa
gate my refresh event
Debug: Finishing transaction 58703780
Debug: Storing state
Debug: Stored state in 0.89 seconds
Notice: Applied catalog in 11.20 seconds

Any additional information you'd like to impart

Errors during feature install on Windows 2019

Affected Puppet, Ruby, OS and module versions/distributions

  • Puppet: 6.19.1
  • Ruby: 2.5.8p224
  • Distribution: Windows 2019
  • Module version: 3.2.3-RC0

How to reproduce (e.g Puppet code you use)

windowsfeature { 'AD-Domain-Services':
ensure => present,
installmanagementtools => true,
}

What are you seeing

Feature AD-Domain-Services -IncludeManagementTools' returned 1: Install-WindowsFeature : Win32 internal error "Access is denied" 0x5 occurred while reading the console output buffer.
Contact Microsoft Customer Support Services.
At line:1 char:30

  • ... verManager; Install-WindowsFeature AD-Domain-Services -IncludeManagem ...
  •             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    • CategoryInfo : ReadError: (:) [Install-WindowsFeature], HostException
    • FullyQualifiedErrorId : ReadConsoleOutput,Microsoft.Windows.ServerManager.Commands.AddWindowsFeatureCommand
      Error: /Stage[main]/Domain_controller/Windowsfeature[AD-Domain-Services]/ensure: change from 'absent' to 'present' failed:
      Execution of 'C:\Windows\system32\WindowsPowershell\v1.0\powershell.exe Import-Module ServerManager; Install-WindowsFeature AD-Domain-Services -IncludeManagementTools' returned 1: Install-WindowsFeature : Win32 internal error "Access is denied" 0x5 occurred while reading the console output buffer.
      Contact Microsoft Customer Support Services.
      At line:1 char:30
  • ... verManager; Install-WindowsFeature AD-Domain-Services -IncludeManagem ...
  •             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    • CategoryInfo : ReadError: (:) [Install-WindowsFeature], HostException
    • FullyQualifiedErrorId : ReadConsoleOutput,Microsoft.Windows.ServerManager.Commands.AddWindowsFeatureCommand

What behaviour did you expect instead

AD-DomainServices feature installed without error

Output log

Feature AD-Domain-Services -IncludeManagementTools' returned 1: Install-WindowsFeature : Win32 internal error "Access is denied" 0x5 occurred while reading the console output buffer.
Contact Microsoft Customer Support Services.
At line:1 char:30

  • ... verManager; Install-WindowsFeature AD-Domain-Services -IncludeManagem ...
  •             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    • CategoryInfo : ReadError: (:) [Install-WindowsFeature], HostException
    • FullyQualifiedErrorId : ReadConsoleOutput,Microsoft.Windows.ServerManager.Commands.AddWindowsFeatureCommand
      Error: /Stage[main]/Domain_controller/Windowsfeature[AD-Domain-Services]/ensure: change from 'absent' to 'present' failed:
      Execution of 'C:\Windows\system32\WindowsPowershell\v1.0\powershell.exe Import-Module ServerManager; Install-WindowsFeature AD-Domain-Services -IncludeManagementTools' returned 1: Install-WindowsFeature : Win32 internal error "Access is denied" 0x5 occurred while reading the console output buffer.
      Contact Microsoft Customer Support Services.
      At line:1 char:30
  • ... verManager; Install-WindowsFeature AD-Domain-Services -IncludeManagem ...
  •             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    • CategoryInfo : ReadError: (:) [Install-WindowsFeature], HostException
    • FullyQualifiedErrorId : ReadConsoleOutput,Microsoft.Windows.ServerManager.Commands.AddWindowsFeatureCommand

Any additional information you'd like to impart

This is due to PowerShell attempting to display a progress bar to a non-interactive connection. Setting $ProgressPreference='SilentlyContinue' prior to the call to Install-WindowsFeature will resolve the problem. I suspect the same issue occurs during Uninstall-WindowsFeature as well, and that call will also need the progress bar to be bypassed.

The restart parameter has been deprecated in favor of the puppetlabs reboot module ( https://github.com/puppetlabs/puppetlabs-reboot ). This parameter will be removed in the next release. (location: C:/ProgramData/PuppetLabs/puppet/cache/lib/puppet/type/windowsfeature.rb:20:in `block (2 levels) in <top (required)>') shows every run

Affected Puppet, Ruby, OS and module versions/distributions

  • Puppet: 5.5.3 (2018.1.2)
  • Ruby:
  • Distribution:
  • Module version: 3.2.0

How to reproduce (e.g Puppet code you use)

What are you seeing

Every run on the Puppet Agent displays the following error message
"The restart parameter has been deprecated in favor of the puppetlabs reboot module ( https://github.com/puppetlabs/puppetlabs-reboot ). This parameter will be removed in the next release.

(location: C:/ProgramData/PuppetLabs/puppet/cache/lib/puppet/type/windowsfeature.rb:20:in `block (2 levels) in <top (required)>')"

What behaviour did you expect instead

I'd expect this message to show if I was using the restart parameter anywhere. But I'm not and this message shows up on all of my servers with every run

Output log

Any additional information you'd like to impart

Restart Parameter causing Corruption

Hello.
I had an issue with windowsfeature and the restart parameter.
i would like to install SMTP-Server features which depends to IIS.
For some reason IIS dont install (some corrupted files In Crypto/machineskeys) manually either automatically.
Manually, the windows server manager want a reboot to undo the changes.
Automatically, puppet reboot the server and few minutes after the reboot, try to redo the installation of IIS. This leads to a infinite loop reboot.

So what is the behaviour of restart => true| false parameter about undo the changes?
if i put restart => false parameter, will the server reboot in case of undo changes ask by servermanager?

Source parameter throwing an error

I specified a source parameter but I get an error like its not even being used. Trying to install .Net frameworks...

Error: /Stage[main]/Profiles::Iis/Windowsfeature[NET-Framework-Core]/ensure: change from absent to present failed: Execution of 'C:\Windows\system32\WindowsPowershell\v1.0\powershell.exe Install-WindowsFeature NET-Framework-Core' returned 1: Install-WindowsFeature : The request to add or remove features on the specified server failed.
Installation of one or more roles, role services, or features failed.
The source files could not be found.
Use the "Source" option to specify the location of the files that are required to restore the feature. For more
information on specifying a source location, see http://go.microsoft.com/fwlink/?LinkId=243077. Error: 0x800f081f
At line:1 char:1

  • Install-WindowsFeature NET-Framework-Core
  •   + CategoryInfo          : InvalidOperation: (@{Vhd=; Credent...Name=localhost}:PSObject) [Install-WindowsFeature],
      Exception
      + FullyQualifiedErrorId : DISMAPI_Error__Failed_To_Enable_Updates,Microsoft.Windows.ServerManager.Commands.AddWind
     owsFeatureCommand
    

Puppet 7 support

Hello, just checking in if there are any plans for support on Puppet 7

Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type windowsfeature at

After installing the module on a standalone windows 20012 R2 machine.

puppet module install opentable-windows_feature

It seems that it is not recognizable inside a different class name.

  windowsfeature { 'NetFx3': }

  exec { 'powercli-install' :
    command   => 'C:\installers\VMware-PowerCLI-5.5.0-1295336.exe /s /v/qn',
    logoutput => true,
    require   => 'NetFx3'
  }

I thought it was my modulepath but it seems to point to the default puppet module path.

Windows PowerShell
Copyright (C) 2013 Microsoft Corporation. All rights reserved.

PS C:\Users\vagrant> puppet config print modulepath
C:/ProgramData/PuppetLabs/puppet/etc/modules;C:/usr/share/puppet/modules
PS C:\Users\vagrant> puppet module list
C:/ProgramData/PuppetLabs/puppet/etc/modules
โ”œโ”€โ”€ opentable-windows_feature (v0.0.1)
โ””โ”€โ”€ puppetlabs-stdlib (v4.1.0)
PS C:\Users\vagrant>

'ps' is not recognized as an internal or external command

I have installed windows feature and used in my own class to configure IIS. So here is the error im getting in Windows agent box.

'ps' is not recognized as an internal or external command,
operable program or batch file.
Using Facter::Util::Resolution.exec with a shell built-in is deprecated. Most built-ins can be replaced with native ruby commands. If you really have to run a built-in, pass "cmd /c your_builtin" as a command (command responsible for this message was "ps -ef | awk '{ gsub("/", " ") ; print $14 }' | awk '/-D/{print $1}'| awk '{ gsub("-D", " ") ; print $0 }'")
'ps' is not recognized as an internal or external command,.

rror: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppe
::Parser::AST::Resource failed with error ArgumentError: Invalid resource type
indowsfeature at /etc/puppetlabs/puppet/modules/taas_config/manifests/init.pp:5
on node
warning: Not using cache on failed catalog

Here is the class I have written

class taas_config {

windowsfeature {'IIS':
feature_name => [
'Web_Server',
'Web-WebServer',
'Web-Asp-Net45',
'Web-ISAPI-Ext',
'Web-ISAPI-Filter',
'NET-Framework-45-ASPNET',
'WAS-NET-Environment',
'Web-Http-Redirect',
'Web-Filtering',
'Web-Mgmt-Console',
'Web-Mgmt-Tools'
]
}
}

Using array of features - slow

This is probably me being lazy... and paying for it.
If I give a full list of all features, subsequent runs of puppet spend a lot of time validating that features are actually installed.

Any suggestions for speeding this up or maybe using a different method for validating ?
This takes about 5 minutes to run.

$windowsfeatures = [ "Application-Server","AS-NET-Framework","FileAndStorage-Services","File-Services","FS-FileServer","Storage-Services","NPAS","NPAS-Policy-Server","Remote-Desktop-Services","RDS-Connection-Broker","RDS-Gateway","Web-Server","Web-WebServer","Web-Common-Http","Web-Default-Doc","Web-Dir-Browsing","Web-Http-Errors","Web-Static-Content","Web-Http-Redirect","Web-Health","Web-Http-Logging","Web-Log-Libraries","Web-Request-Monitor","Web-Http-Tracing","Web-Performance","Web-Stat-Compression","Web-Security","Web-Filtering","Web-Basic-Auth","Web-Windows-Auth","Web-App-Dev","Web-Net-Ext","Web-Net-Ext45","Web-AppInit","Web-ASP","Web-Asp-Net","Web-Asp-Net45","Web-ISAPI-Ext","Web-ISAPI-Filter","Web-Ftp-Server","Web-Ftp-Service","Web-Ftp-Ext","Web-Mgmt-Tools","Web-Mgmt-Console","Web-Scripting-Tools","Web-Mgmt-Service","NET-Framework-Features","NET-Framework-Core","NET-Framework-45-Features","NET-Framework-45-Core","NET-Framework-45-ASPNET","NET-WCF-Services45","NET-WCF-HTTP-Activation45","NET-WCF-TCP-PortSharing45","RSAT","RSAT-Role-Tools","RSAT-NPAS","RPC-over-HTTP-Proxy","FS-SMB1","Telnet-Client","User-Interfaces-Infra","Server-Gui-Mgmt-Infra","Desktop-Experience","Server-Gui-Shell","PowerShellRoot","PowerShell","PowerShell-V2","WAS","WAS-Process-Model","WAS-Config-APIs","WoW64-Support"]

windowsfeature { $windowsfeatures: installmanagementtools => true }

Brian

Fix broken .sync.yml

currently it looks like:

---
Gemfile:
  supports_windows: true
  required:
    ':system_tests':
      - gem: beaker
        version: '2.43.0'
      - gem: beaker-rspec
        version: '5.4.0'
      - gem: winrm
        version: '1.8.1'
      - gem: beaker-puppet_install_helper
spec/acceptance/nodesets/centos-511-x64.yml:
  unmanaged: true
spec/acceptance/nodesets/centos-66-x64-pe.yml:
  unmanaged: true
spec/acceptance/nodesets/centos-66-x64.yml:
  unmanaged: true
spec/acceptance/nodesets/centos-72-x64.yml:
  unmanaged: true
spec/acceptance/nodesets/ubuntu-server-1204-x64.yml:
  unmanaged: true
spec/acceptance/nodesets/ubuntu-server-1404-x64.yml:
  unmanaged: true
spec/acceptance/nodesets/debian-78-x64.yml:
  unmanaged: true
spec/acceptance/nodesets/debian-82-x64.yml:
  unmanaged: true
.travis.yml:
  secure: "hz3gZgI7pMtV6H4m2T1Y418bJ0puwSir2j7oWdkDjB0YjSMwHERvQbbxxfLa47Y/sN2RKo7f5fzMFudriqkw75zyUtnpe4UWITVmQ8DkOQc/G0xb2aCOdenV2CEWZ1fQloL2/n5dYlMgw22iXgb2ARCjhgLYUZG2A9XDKQaQSUk="

which results in this Gemfile if you run modulesync:

source ENV['GEM_SOURCE'] || "https://rubygems.org"

def location_for(place, fake_version = nil)
  if place =~ /^(git[:@][^#]*)#(.*)/
    [fake_version, { :git => $1, :branch => $2, :require => false }].compact
  elsif place =~ /^file:\/\/(.*)/
    ['>= 0', { :path => File.expand_path($1), :require => false }]
  else
    [place, { :require => false }]
  end
end

group :system_tests do
  gem 'beaker', '2.43.0',              :require => false
  if beaker_version = ENV['BEAKER_VERSION']
    gem 'beaker', *location_for(beaker_version)
  end
  if beaker_rspec_version = ENV['BEAKER_RSPEC_VERSION']
    gem 'beaker-rspec', *location_for(beaker_rspec_version)
  else
    gem 'beaker-rspec',  :require => false
  end
  gem 'winrm', '1.8.1',                :require => false
  gem 'beaker-puppet_install_helper',  :require => false
end



if facterversion = ENV['FACTER_GEM_VERSION']
gem 'facter', facterversion.to_s, :require => false, :groups => [:test]
else
gem 'facter', :require => false, :groups => [:test]
end

ENV['PUPPET_VERSION'].nil? ? puppetversion = '~> 4.0' : puppetversion = ENV['PUPPET_VERSION'].to_s
gem 'puppet', puppetversion, :require => false, :groups => [:test]

# vim: syntax=ruby

the stuff from .sync.yml should be an addition to the Gemfile, not an exclusive list. Our config_defaults.yml already contains beaker/beaker-rspec/beaker-puppet_installhelper, so they aren't needed, only winrm.

Cut a new release

With the merging of #88, I find now I can use this module to install windowsfeatures on Win2k8 R2. Would it be possible to create a new release to include this change? Thanks!

UTF8 error with french windows 2012

The module seem to have some problem with UTF8 encoding...

Puppet 5.3.3

Error: Failed to apply catalog: #<ArgumentError: invalid byte sequence in UTF-8>

C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/2.4.0/rexml/source.rb:220:in match' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/2.4.0/rexml/source.rb:220:in match'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/2.4.0/rexml/parsers/baseparser.rb:427:in pull_event' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/2.4.0/rexml/parsers/baseparser.rb:185:in pull'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/2.4.0/rexml/parsers/treeparser.rb:23:in parse' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/2.4.0/rexml/document.rb:288:in build'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/2.4.0/rexml/document.rb:45:in initialize' C:/ProgramData/PuppetLabs/puppet/cache/lib/puppet/provider/windowsfeature/default.rb:31:in new'
C:/ProgramData/PuppetLabs/puppet/cache/lib/puppet/provider/windowsfeature/default.rb:31:in instances' C:/ProgramData/PuppetLabs/puppet/cache/lib/puppet/provider/windowsfeature/default.rb:54:in prefetch'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction.rb:340:in prefetch' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction.rb:241:in prefetch_if_necessary'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction.rb:107:in block in evaluate' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/graph/relationship_graph.rb:119:in traverse'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction.rb:169:in evaluate' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:225:in block in apply'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/util/log.rb:155:in with_destination' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction/report.rb:140:in as_logging_destination'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:224:in apply' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/configurer.rb:172:in block in apply_catalog'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/util.rb:224:in block in benchmark' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/2.4.0/benchmark.rb:308:inrealtime'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/util.rb:223:in benchmark' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/configurer.rb:171:in apply_catalog'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/configurer.rb:344:in run_internal' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/configurer.rb:222:in block in run'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/context.rb:65:in override' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet.rb:263:in override'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/configurer.rb:196:in run' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/agent.rb:46:in block (4 levels) in run'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/agent/locker.rb:21:in lock' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/agent.rb:46:in block (3 levels) in run'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/agent.rb:110:in with_client' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/agent.rb:43:in block (2 levels) in run'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/agent.rb:67:in run_in_fork' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/agent.rb:42:in block in run'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/application.rb:179:in controlled_run' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/agent.rb:40:in run'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/application/agent.rb:365:in onetime' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/application/agent.rb:343:in run_command'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/application.rb:358:in block in run' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/util.rb:666:in exit_on_fail'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/application.rb:358:in run' C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/util/command_line.rb:132:in run'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/util/command_line.rb:72:in execute' C:/Program Files/Puppet Labs/Puppet/puppet/bin/puppet:4:in

'
...
Exception parsing
Line: 5
Position: 154
Last 80 unconsumed characters:
Accรจs ร  distance

C:\windows\system32>

Support for Windows 8 and 8.1

The ServerManager module isn't available on Windows 8 or Windows 8.1 (only server). However there are commands that are available in both Windows Server 2012 and Windows 8 you could use instead:

Enable-WindowsOptionalFeature
Get-WindowsOptionalFeature
Disable-WindowsOptionalFeature

If you use these commands instead for Windows 8/2012, there is no need to import the ServerManager module, and it will then work on both server and desktop versions.

Git Release 2.0.0 does not point to latest code in repository

When I download this repo via the following link https://github.com/voxpupuli/puppet-windowsfeature/archive/v2.0.0.zip it does not download the latest version the repository.

The file default.rb still contains ConvertTo-JSON instead of ConvertTo-XML

I think the release 2.0.0 is not created properly

Invalid XML being returned on Windows 2008 R2 for get-windowsfeature

Affected Puppet, Ruby, OS and module versions/distributions

  • Puppet: agent 4.10.0, server 2.7.2
  • Ruby: 1.9.3p484
  • Distribution: Windows Server 2008 R2
  • Module version: 2.1.0

How to reproduce (e.g Puppet code you use)

windowsfeature { 'Backup-Features':
ensure => present,
installsubfeatures => true,
}

OR

windowsfeature { 'Backup-Tools':
ensure => present,
}

What are you seeing

The error I receive is

Error: Failed to apply catalog: malformed XML: missing tag start
Line: 4894
Position: 197033
Last 80 unconsumed characters:
< /Property> 3 <Property Name="Depends
O

I suppose the error is related just to the features shown. I also use the module to install the SNMP feature and the Telnet client feature without problems.

What behaviour did you expect instead

Output log

Debug: Prefetching default resources for windowsfeature
Debug: Executing: 'C:\Windows\system32\WindowsPowershell\v1.0\powershell.exe Imp
ort-Module ServerManager; Get-WindowsFeature | ConvertTo-XML -As String -Depth 4
-NoTypeInformation'
Debug: Storing state
Debug: Stored state in 0.31 seconds
Error: Failed to apply catalog: malformed XML: missing tag start
Line: 4894
Position: 197033
Last 80 unconsumed characters:
< /Property> 3 <Property Name="Depends
O

Debug: Dynamically-bound server lookup failed, falling back to report_server set
ting
Debug: Dynamically-bound port lookup failed; falling back to report_port setting

Any additional information you'd like to impart

Still having issues with 2008 r2 on v0.1.2

I'm still having issues with getting features installed on 2008 r2. I have a manifest that is applied to a 2008 r2 and a 2012 box. The 2012 box works flawlessly.

I've tried 3 different 2008 r2 boxes (existing builds and new VM deployment) and still seeing very odd behavior. The event log simply says "Finished catalog run in X.XX seconds" when I restart the puppet agent.. When I grab the syntax from the C:\ProgramData\PuppetLabs\puppet\var\state\resources.txt file and run it, the features install successfully so the module is using/formatting the powershell properly. I just don't know what's going on that the manifest isn't actually being applied to the box.

This is the case if I try to install something as simple as web-cgi feature or an array of features under Web-Server. I've also tried non-IIS stuff like tftp-client, etc.

Support for source parameter

Under Windows 2012 R2 (and depending on the way it's installed, also under standard 2012) not all Windows features will install natively. Some of them require an additional install source as a parameter, e.g. from a disk drive that an ISO is mounted to. The powershell commands support the source parameter. Would it be possible to add support for that to this module?

Powershell error installing features

I've just tried using this module and i'm encountering the following error when installing a feature

Where-Object : Cannot bind parameter 'FilterScript'. Cannot convert the "Instal
lState" value of type "System.String" to type "System.Management.Automation.Scr
iptBlock".
At line:1 char:74
+ Import-Module ServerManager; if((Get-WindowsFeature NET-Framework | where <<<
<  InstallState -eq 'Available').count-eq 0){ exit 1 }
    + CategoryInfo          : InvalidArgument: (:) [Where-Object], ParameterBi
   ndingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerSh
   ell.Commands.WhereObjectCommand

The command it's failing on is, and is reproducible running manually

powershell.exe -ExecutionPolicy RemoteSigned -Command "Import-Module ServerManager; if((Get-WindowsFeature NET-Framework | where InstallState -eq 'Available').count-eq 0){ exit 1 }"

I've had a look to see what the issue is and found that the following works but I'm surprised this hasn't caused an issue for anyone else?

powershell.exe -ExecutionPolicy RemoteSigned -Command "Import-Module ServerManager; if((Get-WindowsFeature NET-Framework | where { $_.InstallState -eq 'Available' }).count-eq 0){ exit 1 }"

Add HISTORY.md

In order to migrate to using the automatic generation of changelogs we need to move the old changelog to HISTORY.md and also change the headers in it to reflect valid tags.

Adding features fails on 2008 r2, works on 2012.

I have a recipe that looks like the following:

class wintest {

windowsfeature{'IIS':
feature_name => ['Web-Server',
'Web-WebServer',
'Web-Asp-Net',
'Web-ASP',
'Web-CGI',
'Web-ISAPI-Filter',
'Web-ISAPI-Ext',
'Web-Net-Ext',
'Web-Asp-Net',
'Web-Includes',
'Web-Mgmt-Console'],
}
}

On Server 2012 this works fine. On Server 2008 R2 it does not. However in the event viewer on 2008 r2 all that it shows is that puppet successfully ran the catalog in 5.5 seconds.

If I pull the line of code out of the C:\ProgramData\PuppetLabs\puppet\var\state\resources file and run it manually from a command line on the 2008 r2 box, everything installs just fine.

Is there a different way to install features on 2008r2 vs. 2012?

Win 2008 R2 seems to be having issues with ConvertTo-JSON

Affected Puppet, Ruby, OS and module versions/distributions

  • Puppet: 4.2.1
  • Ruby: 1.8.7
  • Distribution: Windows 2008 R2
  • Module version: 2.0.0

How to reproduce (e.g Puppet code you use)

if (versioncmp( $::kernelmajversion, '6.1') >= 0 ) {
  windowsfeature { 'NET-Framework-Core':
    ensure             => present,
    installsubfeatures => true,
    before             => File['C:/AutomatosRPC'],
  }

What are you seeing

If we need to install the .NET framework, the Puppet run fails stating it cannot find Get-WindowsFeature.

What behaviour did you expect instead

Get-WindowsFeature installs the .NET framework

Output log

Error: Failed to apply catalog: Execution of 'C:\Windows\system32\WindowsPowersh
ell\v1.0\powershell.exe Get-WindowsFeature | ConvertTo-JSON' returned 1: The ter
m 'Get-WindowsFeature' is not recognized as the name of a cmdlet, functi
on, script file, or operable program. Check the spelling of the name, or if a p
ath was included, verify that the path is correct and try again.
At line:1 char:19

  • Get-WindowsFeature <<<< | ConvertTo-JSON
    • CategoryInfo : ObjectNotFound: (Get-WindowsFeature:String) [],
      CommandNotFoundException
    • FullyQualifiedErrorId : CommandNotFoundException

Any additional information you'd like to impart

Does not appear to function properly in Windows Server 2016

Affected Puppet, Ruby, OS and module versions/distributions

  • Puppet: v2016.4.2 / 1.8.2
  • Ruby:
  • Distribution:
  • Module version: 2.0.0

How to reproduce (e.g Puppet code you use)

Run puppet agent. Assign code that attempts to install a windows feature

What are you seeing

Puppet run shows that each feature was installed successfully. When puppet is run again, it says everything installed successfully.

What behaviour did you expect instead

install succesfully and not show up on subsequent runs

Output log

๏ฟฝ[mNotice: Local environment: 'production' doesn't match server specified node environment 'test', switching agent to 'test'.๏ฟฝ[0m
๏ฟฝ[0;32mInfo: Retrieving pluginfacts๏ฟฝ[0m
๏ฟฝ[0;32mInfo: Retrieving plugin๏ฟฝ[0m
๏ฟฝ[0;32mInfo: Loading facts๏ฟฝ[0m
๏ฟฝ[0;32mInfo: Caching catalog for tst-box-as-3.hoad.local๏ฟฝ[0m
๏ฟฝ[0;32mInfo: Applying configuration version '1481319198'๏ฟฝ[0m
๏ฟฝ[mNotice: /Stage[main]/Profiles::Java::Jre8u111x64/Package[Java 8 Update 111]/ensure: created๏ฟฝ[0m
๏ฟฝ[mNotice: /Stage[main]/Profiles::Base::Applications/Windowsfeature[Telnet-Server]/Exec[remove-feature-Telnet-Server]/returns: executed successfully๏ฟฝ[0m
๏ฟฝ[mNotice: /Stage[main]/Profiles::Base::Applications/Windowsfeature[PowerShell-ISE]/Exec[add-feature-PowerShell-ISE]/returns: executed successfully๏ฟฝ[0m
๏ฟฝ[mNotice: /Stage[main]/Profiles::Iis/Windowsfeature[IIS]/Exec[add-feature-IIS]/returns: executed successfully๏ฟฝ[0m
๏ฟฝ[mNotice: /Stage[main]/Profiles::Iis/Windowsfeature[Net-Framework]/Exec[add-feature-Net-Framework]/returns: executed successfully๏ฟฝ[0m
๏ฟฝ[mNotice: /Stage[main]/Profiles::Iis/Windowsfeature[Net-Framework-45]/Exec[add-feature-Net-Framework-45]/returns: executed successfully๏ฟฝ[0m
๏ฟฝ[mNotice: Applied catalog in 27.87 seconds๏ฟฝ[0m

Any additional information you'd like to impart

'Get-WindowsFeature' is not recognized as the name of a cmdlet

When puppet runs it:

Failed to apply catalog: Execution of 'C:\Windows\system32\WindowsPowershell\v1.0\powershell.exe Get-WindowsFeature | ConvertTo-JSON' returned 1: ๏ปฟThe term 'Get-WindowsFeature' is not recognized as the name of a cmdlet, functi on, script file, or operable program. Check the spelling of the name, or if a p ath was included, verify that the path is correct and try again. At line:1 char:19 + Get-WindowsFeature <<<< | ConvertTo-JSON + CategoryInfo : ObjectNotFound: (Get-WindowsFeature:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException

When I run it:

PS C:\Users\vwadmin> Get-WindowsFeature
The term 'Get-WindowsFeature' is not recognized as the name of a cmdlet, function, script file, or operable program. Ch
eck the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:19
+ Get-WindowsFeature <<<<
    + CategoryInfo          : ObjectNotFound: (Get-WindowsFeature:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Puppet stuff:

PS C:\Users\vwadmin> puppet agent --version
4.5.2
PS C:\Users\vwadmin> facter --version
3.2.0 (commit 148948d795fbdcf6bcf51ed36a73f496775835dc)
PS C:\Users\vwadmin>

Missing release

The CHANGELOG and metadata.json mention v3.1.0
But in "releases" the v3.0.0 is the latest release!?!?!

Version restriction dependency for 'stdlib' is out of date

The Modulefile and metadata.json incorrectly specify the minimum version for 'puppetlabs/stdlib' as 3.0.0.

It will result in the following error when running from a puppet agent:


Error: Could not retrieve catalog from remote server:

Error: 400 on SERVER: Unknown function suffix at .../modules/windowsfeature/manifests/init.pp:25 on node ...

i.e. The 'suffix' function in stdlib was not introduced until v4.0.0
https://forge.puppetlabs.com/puppetlabs/stdlib
(changelog #2013-03-26---richard-soderberg-rsoderbergmozillacom---400)

The minimum version should be >=4.0.0 (or higher?)

Error: No suitable tar implementation found

While using puppet module install opentable-windows_feature on the master i get this error. Using puppet-enterprise 3.2.2
Notice: Preparing to install into /etc/puppetlabs/puppet/modules ...
Notice: Downloading from https://forgeapi.puppetlabs.com ...
Error: No suitable tar implementation found
Error: Try 'puppet help module install' for usage

Error: Could not prefetch windowsfeature provider 'default': returned 1

I want to start this issue out by saying I don't think there is an issue with this module. I've been using it for years and had not seen this issue before yesterday. I wanted to post it here to see if anyone else is having the same issue and I imagine anyone else having this same issue might look here for some info about it (I know I did).

Affected Puppet, Ruby, OS and module versions/distributions

  • Puppet: 6.18
  • Ruby: Whatever is packaged with puppet 6.18 on Windows
  • Distribution: We are definitely seeing this on 2012r2 servers. Have not seen it on 2016 yet.
  • Module version: latest

How to reproduce (e.g Puppet code you use) :

I believe implying using the windowsfeature provider will cause this error.

What are you seeing:

Error: Could not prefetch windowsfeature provider 'default': Execution of 'C:\Windows\system32\WindowsPowershell\v1.0\powershell.exe Import-Module ServerManager; Get-WindowsFeature | Select-Object -Property Name, Installed | ConvertTo-XML -As String -Depth 4 -NoTypeInformation' returned 1: <?xml version="1.0"?>

I found this rather odd because the only error i'm seeing is that the exit code was a 1. Sure enough when I try and run the same powershell command Puppet is, I also get an exit code of 1 -- Powershell seems to be able to generate an XML with no issue though. In the picture below you can see that when I run C:\Windows\system32\WindowsPowershell\v1.0\powershell.exe Import-Module ServerManager; Get-WindowsFeature | Select-Object -Property Name, Installed | ConvertTo-XML -As String -Depth 4 -NoTypeInformation I get an exit code of 1 and to sanity check I run the hostname command to check it's exit code and sure enough a 0 should mean a success.

image

What behaviour did you expect instead: No errors

Output log:

Error: Could not prefetch windowsfeature provider 'default': Execution of 'C:\Windows\system32\WindowsPowershell\v1.0\po
wershell.exe Import-Module ServerManager; Get-WindowsFeature | Select-Object -Property Name, Installed | ConvertTo-XML -
As String -Depth 4 -NoTypeInformation' returned 1: <?xml version="1.0"?>
<Objects>
  <Object>
    <Property Name="Name">AD-Certificate</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADCS-Cert-Authority</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADCS-Enroll-Web-Pol</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADCS-Enroll-Web-Svc</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADCS-Web-Enrollment</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADCS-Device-Enrollment</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADCS-Online-Cert</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AD-Domain-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADFS-Federation</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADLDS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADRMS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADRMS-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADRMS-Identity</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Application-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-NET-Framework</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-Ent-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-Dist-Transaction</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-WS-Atomic</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-Incoming-Trans</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-Outgoing-Trans</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-TCP-Port-Sharing</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-Web-Support</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-WAS-Support</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-HTTP-Activation</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-MSMQ-Activation</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-Named-Pipes</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-TCP-Activation</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">DHCP</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">DNS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Fax</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FileAndStorage-Services</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">File-Services</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-FileServer</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-BranchCache</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-Data-Deduplication</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-DFS-Namespace</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-DFS-Replication</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-Resource-Manager</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-VSS-Agent</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-iSCSITarget-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">iSCSITarget-VSS-VDS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-NFS-Service</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-SyncShareService</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Storage-Services</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Hyper-V</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NPAS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NPAS-Policy-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NPAS-Health</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NPAS-Host-Cred</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Print-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Print-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Print-Scan-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Print-Internet</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Print-LPD-Service</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RemoteAccess</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">DirectAccess-VPN</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Routing</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Application-Proxy</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Remote-Desktop-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDS-Connection-Broker</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDS-Gateway</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDS-Licensing</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDS-RD-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDS-Virtualization</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDS-Web-Access</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">VolumeActivation</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Server</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-WebServer</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Common-Http</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Default-Doc</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Dir-Browsing</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Http-Errors</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Static-Content</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Http-Redirect</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-DAV-Publishing</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Health</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Http-Logging</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Custom-Logging</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Log-Libraries</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-ODBC-Logging</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Request-Monitor</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Http-Tracing</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Performance</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Stat-Compression</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Dyn-Compression</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Security</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Filtering</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Basic-Auth</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-CertProvider</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Client-Auth</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Digest-Auth</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Cert-Auth</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-IP-Security</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Url-Auth</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Windows-Auth</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-App-Dev</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Net-Ext</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Net-Ext45</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-AppInit</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-ASP</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Asp-Net</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Asp-Net45</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-CGI</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-ISAPI-Ext</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-ISAPI-Filter</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Includes</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-WebSockets</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Ftp-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Ftp-Service</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Ftp-Ext</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Mgmt-Tools</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Mgmt-Console</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Mgmt-Compat</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Metabase</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Lgcy-Mgmt-Console</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Lgcy-Scripting</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-WMI</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Scripting-Tools</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Mgmt-Service</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">WDS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WDS-Deployment</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WDS-Transport</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ServerEssentialsRole</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">UpdateServices</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">UpdateServices-WidDB</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">UpdateServices-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">UpdateServices-DB</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-Framework-Features</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-Framework-Core</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-HTTP-Activation</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-Non-HTTP-Activ</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-Framework-45-Features</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-Framework-45-Core</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-Framework-45-ASPNET</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-WCF-Services45</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-WCF-HTTP-Activation45</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-WCF-MSMQ-Activation45</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-WCF-Pipe-Activation45</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-WCF-TCP-Activation45</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-WCF-TCP-PortSharing45</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">BITS</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">BITS-IIS-Ext</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">BITS-Compact-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">BitLocker</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">BitLocker-NetworkUnlock</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">BranchCache</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NFS-Client</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Data-Center-Bridging</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Direct-Play</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">EnhancedStorage</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Failover-Clustering</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">GPMC</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-WHC</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">InkAndHandwritingServices</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Internet-Print-Client</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">IPAM</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ISNS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">LPR-Port-Monitor</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ManagementOdata</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Server-Media-Foundation</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-Directory</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-HTTP-Support</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-Triggers</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-Multicasting</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-Routing</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-DCOM</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Multipath-IO</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NLB</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">PNRP</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">qWave</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">CMAK</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Remote-Assistance</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDC</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Feature-Tools</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-SMTP</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Feature-Tools-BitLocker</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Feature-Tools-BitLocker-RemoteAdminTool</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Feature-Tools-BitLocker-BdeAducExt</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Bits-Server</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Clustering</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Clustering-Mgmt</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Clustering-PowerShell</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Clustering-AutomationServer</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Clustering-CmdInterface</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">IPAM-Client-Feature</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-NLB</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-SNMP</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-WINS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Role-Tools</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-AD-Tools</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-AD-PowerShell</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-ADDS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-AD-AdminCenter</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-ADDS-Tools</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-NIS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-ADLDS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Hyper-V-Tools</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Hyper-V-Tools</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Hyper-V-PowerShell</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-RDS-Tools</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-RDS-Gateway</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-RDS-Licensing-Diagnosis-UI</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDS-Licensing-UI</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">UpdateServices-RSAT</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">UpdateServices-API</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">UpdateServices-UI</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-ADCS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-ADCS-Mgmt</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Online-Responder</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-ADRMS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-DHCP</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-DNS-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Fax</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-File-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-DFS-Mgmt-Con</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-FSRM-Mgmt</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-NFS-Admin</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-CoreFile-Mgmt</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-NPAS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Print-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-RemoteAccess</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-RemoteAccess-Mgmt</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-RemoteAccess-PowerShell</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-VA-Tools</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WDS-AdminPack</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RPC-over-HTTP-Proxy</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Simple-TCPIP</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-SMB1</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-SMBBW</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">SMTP-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">SNMP-Service</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">SNMP-WMI-Provider</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Telnet-Client</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Telnet-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">TFTP-Client</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">User-Interfaces-Infra</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Server-Gui-Mgmt-Infra</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Desktop-Experience</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Server-Gui-Shell</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Biometric-Framework</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WFF</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Windows-Identity-Foundation</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Windows-Internal-Database</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">PowerShellRoot</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">PowerShell</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">PowerShell-V2</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">DSC-Service</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">PowerShell-ISE</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">WindowsPowerShellWebAccess</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WAS</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">WAS-Process-Model</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">WAS-NET-Environment</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">WAS-Config-APIs</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Search-Service</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Windows-Server-Backup</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Migration</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WindowsStorageManagementService</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Windows-TIFF-IFilter</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WinRM-IIS-Ext</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WINS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Wireless-Networking</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WoW64-Support</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">XPS-Viewer</Property>
    <Property Name="Installed">False</Property>
  </Object>
</Objects>
Error: Failed to apply catalog: Execution of 'C:\Windows\system32\WindowsPowershell\v1.0\powershell.exe Import-Module Se
rverManager; Get-WindowsFeature | Select-Object -Property Name, Installed | ConvertTo-XML -As String -Depth 4 -NoTypeInf
ormation' returned 1: <?xml version="1.0"?>
<Objects>
  <Object>
    <Property Name="Name">AD-Certificate</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADCS-Cert-Authority</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADCS-Enroll-Web-Pol</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADCS-Enroll-Web-Svc</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADCS-Web-Enrollment</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADCS-Device-Enrollment</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADCS-Online-Cert</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AD-Domain-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADFS-Federation</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADLDS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADRMS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADRMS-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ADRMS-Identity</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Application-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-NET-Framework</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-Ent-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-Dist-Transaction</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-WS-Atomic</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-Incoming-Trans</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-Outgoing-Trans</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-TCP-Port-Sharing</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-Web-Support</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-WAS-Support</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-HTTP-Activation</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-MSMQ-Activation</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-Named-Pipes</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">AS-TCP-Activation</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">DHCP</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">DNS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Fax</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FileAndStorage-Services</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">File-Services</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-FileServer</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-BranchCache</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-Data-Deduplication</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-DFS-Namespace</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-DFS-Replication</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-Resource-Manager</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-VSS-Agent</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-iSCSITarget-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">iSCSITarget-VSS-VDS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-NFS-Service</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-SyncShareService</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Storage-Services</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Hyper-V</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NPAS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NPAS-Policy-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NPAS-Health</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NPAS-Host-Cred</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Print-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Print-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Print-Scan-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Print-Internet</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Print-LPD-Service</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RemoteAccess</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">DirectAccess-VPN</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Routing</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Application-Proxy</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Remote-Desktop-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDS-Connection-Broker</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDS-Gateway</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDS-Licensing</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDS-RD-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDS-Virtualization</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDS-Web-Access</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">VolumeActivation</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Server</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-WebServer</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Common-Http</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Default-Doc</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Dir-Browsing</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Http-Errors</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Static-Content</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Http-Redirect</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-DAV-Publishing</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Health</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Http-Logging</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Custom-Logging</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Log-Libraries</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-ODBC-Logging</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Request-Monitor</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Http-Tracing</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Performance</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Stat-Compression</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Dyn-Compression</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Security</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Filtering</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Basic-Auth</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-CertProvider</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Client-Auth</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Digest-Auth</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Cert-Auth</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-IP-Security</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Url-Auth</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Windows-Auth</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-App-Dev</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Net-Ext</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Net-Ext45</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-AppInit</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-ASP</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Asp-Net</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Asp-Net45</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-CGI</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-ISAPI-Ext</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-ISAPI-Filter</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Includes</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-WebSockets</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Ftp-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Ftp-Service</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Ftp-Ext</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Mgmt-Tools</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Mgmt-Console</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Mgmt-Compat</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Metabase</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Lgcy-Mgmt-Console</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Lgcy-Scripting</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-WMI</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Scripting-Tools</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-Mgmt-Service</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">WDS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WDS-Deployment</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WDS-Transport</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ServerEssentialsRole</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">UpdateServices</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">UpdateServices-WidDB</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">UpdateServices-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">UpdateServices-DB</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-Framework-Features</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-Framework-Core</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-HTTP-Activation</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-Non-HTTP-Activ</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-Framework-45-Features</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-Framework-45-Core</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-Framework-45-ASPNET</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-WCF-Services45</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-WCF-HTTP-Activation45</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-WCF-MSMQ-Activation45</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-WCF-Pipe-Activation45</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-WCF-TCP-Activation45</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NET-WCF-TCP-PortSharing45</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">BITS</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">BITS-IIS-Ext</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">BITS-Compact-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">BitLocker</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">BitLocker-NetworkUnlock</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">BranchCache</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NFS-Client</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Data-Center-Bridging</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Direct-Play</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">EnhancedStorage</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Failover-Clustering</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">GPMC</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Web-WHC</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">InkAndHandwritingServices</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Internet-Print-Client</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">IPAM</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ISNS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">LPR-Port-Monitor</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">ManagementOdata</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Server-Media-Foundation</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-Directory</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-HTTP-Support</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-Triggers</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-Multicasting</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-Routing</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">MSMQ-DCOM</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Multipath-IO</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">NLB</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">PNRP</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">qWave</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">CMAK</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Remote-Assistance</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDC</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Feature-Tools</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-SMTP</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Feature-Tools-BitLocker</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Feature-Tools-BitLocker-RemoteAdminTool</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Feature-Tools-BitLocker-BdeAducExt</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Bits-Server</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Clustering</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Clustering-Mgmt</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Clustering-PowerShell</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Clustering-AutomationServer</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Clustering-CmdInterface</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">IPAM-Client-Feature</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-NLB</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-SNMP</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-WINS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Role-Tools</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-AD-Tools</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-AD-PowerShell</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-ADDS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-AD-AdminCenter</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-ADDS-Tools</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-NIS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-ADLDS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Hyper-V-Tools</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Hyper-V-Tools</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Hyper-V-PowerShell</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-RDS-Tools</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-RDS-Gateway</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-RDS-Licensing-Diagnosis-UI</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RDS-Licensing-UI</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">UpdateServices-RSAT</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">UpdateServices-API</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">UpdateServices-UI</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-ADCS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-ADCS-Mgmt</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Online-Responder</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-ADRMS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-DHCP</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-DNS-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Fax</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-File-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-DFS-Mgmt-Con</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-FSRM-Mgmt</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-NFS-Admin</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-CoreFile-Mgmt</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-NPAS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-Print-Services</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-RemoteAccess</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-RemoteAccess-Mgmt</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-RemoteAccess-PowerShell</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RSAT-VA-Tools</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WDS-AdminPack</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">RPC-over-HTTP-Proxy</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Simple-TCPIP</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-SMB1</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">FS-SMBBW</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">SMTP-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">SNMP-Service</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">SNMP-WMI-Provider</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Telnet-Client</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Telnet-Server</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">TFTP-Client</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">User-Interfaces-Infra</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Server-Gui-Mgmt-Infra</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Desktop-Experience</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Server-Gui-Shell</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Biometric-Framework</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WFF</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Windows-Identity-Foundation</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Windows-Internal-Database</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">PowerShellRoot</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">PowerShell</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">PowerShell-V2</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">DSC-Service</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">PowerShell-ISE</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">WindowsPowerShellWebAccess</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WAS</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">WAS-Process-Model</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">WAS-NET-Environment</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">WAS-Config-APIs</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">Search-Service</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Windows-Server-Backup</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Migration</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WindowsStorageManagementService</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Windows-TIFF-IFilter</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WinRM-IIS-Ext</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WINS</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">Wireless-Networking</Property>
    <Property Name="Installed">False</Property>
  </Object>
  <Object>
    <Property Name="Name">WoW64-Support</Property>
    <Property Name="Installed">True</Property>
  </Object>
  <Object>
    <Property Name="Name">XPS-Viewer</Property>
    <Property Name="Installed">False</Property>
  </Object>
</Objects>

Any additional information you'd like to impart

Name                           Value
----                           -----
PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.42000
BuildVersion                   6.3.9600.19170
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.2

dism to windowsfeature: Invalid resource type windowsfeature

For readability, I want to migrate from the dism module to windowsfeature. However, in my Vagrant setup with librarian-puppet, I add this to init.pp:

windowsfeature { 'IIS-WebServer': }

When I run vagrant provision I always get an error:

C:\Code\hb-windows-iis-site>vagrant provision
[default] Running provisioner: puppet...
Running Puppet with init.pp...
โ†[1;31mError: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type windowsfeature at C:/tmp/vagrant-puppet/manifests/init.pp:18 on node vagrant-2008r2

Any idea what I'm missing here?

module name underscore issue

module name = windows_feature results in error

Error 400 on SERVER: Could
not find class windowsfeature::param::powershell

renaming module windowsfeature resolved this

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.