# salt.modules.win_servermanager

Manage Windows features via the ServerManager powershell module. Can list available and installed roles/features. Can install and remove roles/features.

maintainer:

  Shane Lee <slee@saltstack.com>

platform:

  Windows Server 2008R2 or greater

depends:

  PowerShell module `ServerManager`

salt.modules.win_servermanager.install(feature, recurse=False, restart=False, source=None, exclude=None)

  Install a feature

  Note

  Some features require reboot after un/installation, if so until the server is restarted other features can not be installed!

  Note

  Some features take a long time to complete un/installation, set -t with a long timeout

  Parameters:

    - feature (str, list) --

      The name of the feature(s) to install. This can be a single feature, a string of features in a comma delimited list (no spaces), or a list of features.

      Added in version 2018.3.0: Added the ability to pass a list of features to be installed.

    - recurse (Options[bool]) -- Install all sub-features. Default is False

    - restart (Optional[bool]) -- Restarts the computer when installation is complete, if required by the role/feature installed. Will also trigger a reboot if an item in `exclude` requires a reboot to be properly removed. Default is False

    - source (Optional[str]) -- Path to the source files if missing from the target system. None means that the system will use windows update services to find the required files. Default is None

    - exclude (Optional[str]) --

      The name of the feature to exclude when installing the named feature. This can be a single feature, a string of features in a comma-delimited list (no spaces), or a list of features.

      Warning

      As there is no exclude option for the `Add-WindowsFeature` or `Install-WindowsFeature` PowerShell commands the features named in `exclude` will be installed with other sub-features and will then be removed. If the feature named in ``exclude`` is not a sub-feature of one of the installed items it will still be removed.

  Returns:

    A dictionary containing the results of the install

  Return type:

    dict

  CLI Example:

      # Install the Telnet Client passing a single string
      salt '*' win_servermanager.install Telnet-Client

      # Install the TFTP Client and the SNMP Service passing a comma-delimited
      # string. Install all sub-features
      salt '*' win_servermanager.install TFTP-Client,SNMP-Service recurse=True

      # Install the TFTP Client from d:\side-by-side
      salt '*' win_servermanager.install TFTP-Client source=d:\\side-by-side

      # Install the XPS Viewer, SNMP Service, and Remote Access passing a
      # list. Install all sub-features, but exclude the Web Server
      salt '*' win_servermanager.install "['XPS-Viewer', 'SNMP-Service', 'RemoteAccess']" True recurse=True exclude="Web-Server"

salt.modules.win_servermanager.list_available()

  List available features to install

  Returns:

    A list of available features as returned by the `Get-WindowsFeature` PowerShell command

  Return type:

    str

  CLI Example:

      salt '*' win_servermanager.list_available

salt.modules.win_servermanager.list_installed()

  List installed features. Supported on Windows Server 2008 and Windows 8 and newer.

  Returns:

    A dictionary of installed features

  Return type:

    dict

  CLI Example:

      salt '*' win_servermanager.list_installed

salt.modules.win_servermanager.remove(feature, remove_payload=False, restart=False)

  Remove an installed feature

  Note

  Some features require a reboot after installation/uninstallation. If one of these features are modified, then other features cannot be installed until the server is restarted. Additionally, some features take a while to complete installation/uninstallation, so it is a good idea to use the `-t` option to set a longer timeout.

  Parameters:

    - feature (str, list) --

      The name of the feature(s) to remove. This can be a single feature, a string of features in a comma delimited list (no spaces), or a list of features.

      Added in version 2018.3.0: Added the ability to pass a list of features to be removed.

    - remove_payload (Optional[bool]) -- True will cause the feature to be removed from the side-by-side store (`%SystemDrive%:\Windows\WinSxS`). Default is False

    - restart (Optional[bool]) -- Restarts the computer when uninstall is complete, if required by the role/feature removed. Default is False

  Returns:

    A dictionary containing the results of the uninstall

  Return type:

    dict

  CLI Example:

      salt -t 600 '*' win_servermanager.remove Telnet-Client