Add source as optional parameter
This commit is contained in:
parent
2974358b2b
commit
21b79123a4
2 changed files with 42 additions and 7 deletions
|
@ -28,6 +28,7 @@ $result = New-Object PSObject -Property @{
|
||||||
}
|
}
|
||||||
|
|
||||||
$name = Get-Attr $params "name" -failifempty $true
|
$name = Get-Attr $params "name" -failifempty $true
|
||||||
|
|
||||||
$name = $name -split ',' | % { $_.Trim() }
|
$name = $name -split ',' | % { $_.Trim() }
|
||||||
|
|
||||||
$state = Get-Attr $params "state" "present"
|
$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
|
$restart = Get-Attr $params "restart" $false | ConvertTo-Bool
|
||||||
$includesubfeatures = Get-Attr $params "include_sub_features" $false | ConvertTo-Bool
|
$includesubfeatures = Get-Attr $params "include_sub_features" $false | ConvertTo-Bool
|
||||||
$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
|
||||||
|
|
||||||
If ($state -eq "present") {
|
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 {
|
try {
|
||||||
If (Get-Command "Install-WindowsFeature" -ErrorAction SilentlyContinue) {
|
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) {
|
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 {
|
Else {
|
||||||
Fail-Json $result "Not supported on this version of Windows"
|
Fail-Json $result "Not supported on this version of Windows"
|
||||||
|
|
|
@ -34,7 +34,6 @@ options:
|
||||||
- Names of roles or features to install as a single feature or a comma-separated list of features
|
- Names of roles or features to install as a single feature or a comma-separated list of features
|
||||||
required: true
|
required: true
|
||||||
default: null
|
default: null
|
||||||
aliases: []
|
|
||||||
state:
|
state:
|
||||||
description:
|
description:
|
||||||
- State of the features or roles on the system
|
- State of the features or roles on the system
|
||||||
|
@ -43,7 +42,6 @@ options:
|
||||||
- present
|
- present
|
||||||
- absent
|
- absent
|
||||||
default: present
|
default: present
|
||||||
aliases: []
|
|
||||||
restart:
|
restart:
|
||||||
description:
|
description:
|
||||||
- Restarts the computer automatically when installation is complete, if restarting is required by the roles or features installed.
|
- Restarts the computer automatically when installation is complete, if restarting is required by the roles or features installed.
|
||||||
|
@ -51,7 +49,6 @@ options:
|
||||||
- yes
|
- yes
|
||||||
- no
|
- no
|
||||||
default: null
|
default: null
|
||||||
aliases: []
|
|
||||||
include_sub_features:
|
include_sub_features:
|
||||||
description:
|
description:
|
||||||
- Adds all subfeatures of the specified feature
|
- Adds all subfeatures of the specified feature
|
||||||
|
@ -59,7 +56,6 @@ options:
|
||||||
- yes
|
- yes
|
||||||
- no
|
- no
|
||||||
default: null
|
default: null
|
||||||
aliases: []
|
|
||||||
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
|
||||||
|
@ -67,7 +63,13 @@ options:
|
||||||
- yes
|
- yes
|
||||||
- no
|
- no
|
||||||
default: null
|
default: null
|
||||||
aliases: []
|
source:
|
||||||
|
description:
|
||||||
|
- Specify a source to install the feature from
|
||||||
|
required: false
|
||||||
|
choices:
|
||||||
|
- {driveletter}:\sources\sxs
|
||||||
|
- \\{IP}\Share\sources\sxs
|
||||||
author:
|
author:
|
||||||
- "Paul Durivage (@angstwad)"
|
- "Paul Durivage (@angstwad)"
|
||||||
- "Trond Hindenes (@trondhindenes)"
|
- "Trond Hindenes (@trondhindenes)"
|
||||||
|
|
Loading…
Reference in a new issue