Add source as optional parameter

This commit is contained in:
Trond Hindenes 2016-01-07 19:36:32 +01:00 committed by Matt Clay
parent 2974358b2b
commit 21b79123a4
2 changed files with 42 additions and 7 deletions

View file

@ -28,6 +28,7 @@ $result = New-Object PSObject -Property @{
}
$name = Get-Attr $params "name" -failifempty $true
$name = $name -split ',' | % { $_.Trim() }
$state = Get-Attr $params "state" "present"
@ -39,14 +40,46 @@ If (($state -ne 'present') -and ($state -ne 'absent')) {
$restart = Get-Attr $params "restart" $false | ConvertTo-Bool
$includesubfeatures = Get-Attr $params "include_sub_features" $false | ConvertTo-Bool
$includemanagementtools = Get-Attr $params "include_management_tools" $false | ConvertTo-Bool
$source = Get-Attr $params "source" $false
If ($state -eq "present") {
if ($source)
{
if (!(test-path $source))
{
Fail-Json $result "Failed to find source path $source"
}
}
$InstallParams = @{
"Name"=$name;
"Restart"=$Restart;
"IncludeAllSubFeature"=$includesubfeatures;
"ErrorAction"="SilentlyContinue"
}
if ($IncludeManagementTools -eq $true)
{
$InstallParams.add("IncludeManagementTools";$includemanagementtools)
}
if ($source -ne $null)
{
$InstallParams.add("Source";$source)
}
try {
If (Get-Command "Install-WindowsFeature" -ErrorAction SilentlyContinue) {
$featureresult = Install-WindowsFeature -Name $name -Restart:$restart -IncludeAllSubFeature:$includesubfeatures -IncludeManagementTools:$includemanagementtools -ErrorAction SilentlyContinue
$featureresult = Install-WindowsFeature @Params
}
ElseIf (Get-Command "Add-WindowsFeature" -ErrorAction SilentlyContinue) {
$featureresult = Add-WindowsFeature -Name $name -Restart:$restart -IncludeAllSubFeature:$includesubfeatures -ErrorAction SilentlyContinue
if ($IncludeManagementTools)
{
$Params.Remove("IncludeManagementTools")
}
$featureresult = Add-WindowsFeature @Params
}
Else {
Fail-Json $result "Not supported on this version of Windows"

View file

@ -34,7 +34,6 @@ options:
- Names of roles or features to install as a single feature or a comma-separated list of features
required: true
default: null
aliases: []
state:
description:
- State of the features or roles on the system
@ -43,7 +42,6 @@ options:
- present
- absent
default: present
aliases: []
restart:
description:
- Restarts the computer automatically when installation is complete, if restarting is required by the roles or features installed.
@ -51,7 +49,6 @@ options:
- yes
- no
default: null
aliases: []
include_sub_features:
description:
- Adds all subfeatures of the specified feature
@ -59,7 +56,6 @@ options:
- yes
- no
default: null
aliases: []
include_management_tools:
description:
- Adds the corresponding management tools to the specified feature
@ -67,7 +63,13 @@ options:
- yes
- no
default: null
aliases: []
source:
description:
- Specify a source to install the feature from
required: false
choices:
- {driveletter}:\sources\sxs
- \\{IP}\Share\sources\sxs
author:
- "Paul Durivage (@angstwad)"
- "Trond Hindenes (@trondhindenes)"