This commit is contained in:
parent
2a27176d7c
commit
d2094cd611
2 changed files with 55 additions and 43 deletions
|
@ -42,15 +42,34 @@ $includesubfeatures = Get-Attr $params "include_sub_features" $false | ConvertTo
|
||||||
$includemanagementtools = Get-Attr $params "include_management_tools" $false | ConvertTo-Bool
|
$includemanagementtools = Get-Attr $params "include_management_tools" $false | ConvertTo-Bool
|
||||||
$source = Get-Attr $params "source" $false
|
$source = Get-Attr $params "source" $false
|
||||||
|
|
||||||
If ($state -eq "present") {
|
# Determine which cmdlets we need to work with. Then we can set options appropriate for the cmdlet
|
||||||
if ($source)
|
$installWF= $false
|
||||||
{
|
$addWF = $false
|
||||||
if (!(test-path $source))
|
|
||||||
{
|
|
||||||
Fail-Json $result "Failed to find source path $source"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
# We can infer uninstall/remove if install/add cmdlets exist
|
||||||
|
if (Get-Command "Install-WindowsFeature" -ErrorAction SilentlyContinue) {
|
||||||
|
$addCmdlet = "Install-WindowsFeature"
|
||||||
|
$removeCmdlet = "Uninstall-WindowsFeature"
|
||||||
|
$installWF = $true
|
||||||
|
}
|
||||||
|
elseif (Get-Command "Add-WindowsFeature" -ErrorAction SilentlyContinue) {
|
||||||
|
$addCmdlet = "Add-WindowsFeature"
|
||||||
|
$removeCmdlet = "Remove-WindowsFeature"
|
||||||
|
$addWF = $true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
throw [System.Exception] "Not supported on this version of Windows"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Fail-Json $result $_.Exception.Message
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
If ($state -eq "present") {
|
||||||
|
|
||||||
|
# Base params to cover both Add/Install-WindowsFeature
|
||||||
$InstallParams = @{
|
$InstallParams = @{
|
||||||
"Name"=$name;
|
"Name"=$name;
|
||||||
"Restart"=$Restart;
|
"Restart"=$Restart;
|
||||||
|
@ -58,48 +77,39 @@ If ($state -eq "present") {
|
||||||
"ErrorAction"="SilentlyContinue"
|
"ErrorAction"="SilentlyContinue"
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($IncludeManagementTools -eq $true)
|
# IncludeManagementTools and source are options only for Install-WindowsFeature
|
||||||
{
|
if ($installWF) {
|
||||||
$InstallParams.add("IncludeManagementTools",$includemanagementtools)
|
|
||||||
|
if ($source) {
|
||||||
|
if (!(test-path $source)) {
|
||||||
|
Fail-Json $result "Failed to find source path $source"
|
||||||
|
}
|
||||||
|
|
||||||
|
$InstallParams.add("Source",$source)
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($IncludeManagementTools) {
|
||||||
|
$InstallParams.add("IncludeManagementTools",$includemanagementtools)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($source)
|
|
||||||
{
|
|
||||||
$InstallParams.add("Source",$source)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
If (Get-Command "Install-WindowsFeature" -ErrorAction SilentlyContinue) {
|
$featureresult = Invoke-Expression "$addCmdlet @InstallParams"
|
||||||
$featureresult = Install-WindowsFeature @InstallParams
|
|
||||||
}
|
|
||||||
ElseIf (Get-Command "Add-WindowsFeature" -ErrorAction SilentlyContinue) {
|
|
||||||
if ($IncludeManagementTools)
|
|
||||||
{
|
|
||||||
$InstallParams.Remove("IncludeManagementTools")
|
|
||||||
}
|
|
||||||
$featureresult = Add-WindowsFeature @InstallParams
|
|
||||||
}
|
|
||||||
Else {
|
|
||||||
Fail-Json $result "Not supported on this version of Windows"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
Fail-Json $result $_.Exception.Message
|
Fail-Json $result $_.Exception.Message
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ElseIf ($state -eq "absent") {
|
ElseIf ($state -eq "absent") {
|
||||||
|
|
||||||
|
$UninstallParams = @{
|
||||||
|
"Name"=$name;
|
||||||
|
"Restart"=$Restart;
|
||||||
|
"ErrorAction"="SilentlyContinue"
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
If (Get-Command "Uninstall-WindowsFeature" -ErrorAction SilentlyContinue) {
|
$featureresult = Invoke-Expression "$removeCmdlet @UninstallParams"
|
||||||
$featureresult = Uninstall-WindowsFeature -Name $name -Restart:$restart -ErrorAction SilentlyContinue
|
|
||||||
}
|
|
||||||
ElseIf (Get-Command "Remove-WindowsFeature" -ErrorAction SilentlyContinue) {
|
|
||||||
$featureresult = Remove-WindowsFeature -Name $name -Restart:$restart -ErrorAction SilentlyContinue
|
|
||||||
}
|
|
||||||
Else {
|
|
||||||
Fail-Json $result "Not supported on this version of Windows"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
Fail-Json $result $_.Exception.Message
|
Fail-Json $result $_.Exception.Message
|
||||||
|
|
|
@ -31,7 +31,7 @@ module: win_feature
|
||||||
version_added: "1.7"
|
version_added: "1.7"
|
||||||
short_description: Installs and uninstalls Windows Features on Windows Server
|
short_description: Installs and uninstalls Windows Features on Windows Server
|
||||||
description:
|
description:
|
||||||
- Installs or uninstalls Windows Roles or Features on Windows Server. This module uses the Add/Remove-WindowsFeature Cmdlets, which is not available on client os machines.
|
- Installs or uninstalls Windows Roles or Features on Windows Server. This module uses the Add/Remove-WindowsFeature Cmdlets on Windows 2008 and Install/Uninstall-WindowsFeature Cmdlets on Windows 2012, which are not available on client os machines.
|
||||||
options:
|
options:
|
||||||
name:
|
name:
|
||||||
description:
|
description:
|
||||||
|
@ -64,7 +64,8 @@ options:
|
||||||
required: false
|
required: false
|
||||||
include_management_tools:
|
include_management_tools:
|
||||||
description:
|
description:
|
||||||
- Adds the corresponding management tools to the specified feature
|
- Adds the corresponding management tools to the specified feature.
|
||||||
|
- Not supported in Windows 2008. If present when using Windows 2008 this option will be ignored.
|
||||||
choices:
|
choices:
|
||||||
- yes
|
- yes
|
||||||
- no
|
- no
|
||||||
|
@ -72,7 +73,8 @@ options:
|
||||||
required: false
|
required: false
|
||||||
source:
|
source:
|
||||||
description:
|
description:
|
||||||
- Specify a source to install the feature from
|
- Specify a source to install the feature from.
|
||||||
|
- Not supported in Windows 2008. If present when using Windows 2008 this option will be ignored.
|
||||||
required: false
|
required: false
|
||||||
choices: [ ' {driveletter}:\sources\sxs', ' {IP}\Share\sources\sxs' ]
|
choices: [ ' {driveletter}:\sources\sxs', ' {IP}\Share\sources\sxs' ]
|
||||||
version_added: "2.1"
|
version_added: "2.1"
|
||||||
|
|
Loading…
Reference in a new issue