Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .MetaTestOptIn.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[
"Common Tests - Validate Markdown Files",
"Common Tests - Validate Example Files"
"Common Tests - Validate Markdown Files",
"Common Tests - Validate Example Files",
"Common Tests - Validate Module Files",
"Common Tests - Validate Script Files"
]
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
DSCResource.Tests
DSCResource.Tests/*
.vs
/DSCResource.Tests
/DSCResource.Tests
1 change: 0 additions & 1 deletion DSCResource.Tests
Submodule DSCResource.Tests deleted from 104da5
36 changes: 18 additions & 18 deletions DSCResources/MSFT_Language/MSFT_Language.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -133,39 +133,39 @@ Function Set-TargetResource
[System.String]
$IsSingleInstance,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.Int32]
$LocationID,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.String]
$MUILanguage,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.String]
$MUIFallbackLanguage,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.String]
$SystemLocale,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.String[]]
$AddInputLanguages,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.String[]]
$RemoveInputLanguages,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.String]
$UserLocale,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.Boolean]
$CopySystem =$true,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.Boolean]
$CopyNewUser=$true
)
Expand Down Expand Up @@ -345,41 +345,41 @@ Function Test-TargetResource
[System.String]
$IsSingleInstance,

[Parameter(Mandatory = $false)]
[Parameter()]
[ValidateNotNullOrEmpty()]
[System.Int32]
$LocationID,

[Parameter(Mandatory = $false)]
[Parameter()]
[ValidateNotNullOrEmpty()]
[System.String]
$MUILanguage,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.String]
$MUIFallbackLanguage,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.String]
$SystemLocale,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.String[]]
$AddInputLanguages,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.String[]]
$RemoveInputLanguages,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.String]
$UserLocale,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.Boolean]
$CopySystem,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.Boolean]
$CopyNewUser
)
Expand Down
88 changes: 66 additions & 22 deletions DSCResources/MSFT_LanguagePack/MSFT_LanguagePack.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
.PARAMETER LanguagePackLocation
Not used in Get-TargetResource.

.PARAMETER SuppressReboot
Not used in Get-TargetResource.

.PARAMETER Ensure
Not used in Get-TargetResource.
#>
Expand Down Expand Up @@ -39,6 +42,7 @@ Function Get-TargetResource

$returnValue = @{
LanguagePackName = [System.String]$LanguagePackName
SuppressReboot = [Boolean]$false
Ensure = [System.String]$ensure
}

Expand All @@ -56,6 +60,10 @@ Function Get-TargetResource
Either Local or Remote path to the language pack cab file. This is only used
when installing a language pack

.PARAMETER SuppressReboot
If set to true the reboot required flag isn't set after successful installation of a
language pack, this can be useful to save time when installing multiple language packs.

.PARAMETER Ensure
Indicates whether the given language pack should be installed or uninstalled.
Set this property to Present to install the Language Pack, and Absent to uninstall
Expand All @@ -71,42 +79,69 @@ Function Set-TargetResource
[System.String]
$LanguagePackName,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.String]
$LanguagePackLocation,

[Parameter(Mandatory = $false)]
[Parameter()]
[Boolean]
$SuppressReboot=$false,

[Parameter()]
[ValidateSet("Present","Absent")]
[System.String]
$Ensure="Present"
)
$timeout = 7200

switch ($Ensure) {
switch ($Ensure)
{
'Present' {
if ($PSBoundParameters.ContainsKey('LanguagePackLocation'))
if ($PSBoundParameters.ContainsKey('LanguagePackLocation'))
{
Write-Verbose "Installing Language Pack"
if (Test-Path -Path $LanguagePackLocation)
{
Write-Verbose "Installing Language Pack"
if (Test-Path -Path $LanguagePackLocation)
{
lpksetup.exe /i $LanguagePackName /p $LanguagePackLocation /r /a /s
}
else
{
Throw "Invalid source Location"
}
lpksetup.exe /i $LanguagePackName /p $LanguagePackLocation /r /a /s
$startTime = Get-Date
}
else
{
Throw "Language Pack location must be specified when adding a new Language Pack"
Throw "Invalid source Location"
}
}
'Absent' {
Write-Verbose "Removing Language Pack"
lpksetup.exe /u $LanguagePackName /r /a /s
else
{
Throw "Language Pack location must be specified when adding a new Language Pack"
}
}
'Absent' {
Write-Verbose "Removing Language Pack"
lpksetup.exe /u $LanguagePackName /r /a /s
$startTime = Get-Date
}
default {
Throw "invalid operation"
}
}
do
{
$Process = Get-Process -Name "lpksetup" -ErrorAction SilentlyContinue
$currentTime = (Get-Date) - $startTime
if ($currentTime.TotalSeconds -gt $timeout)
{
throw "Process did not complete in under $timeout seconds"
}
Write-Verbose "Waiting for Process to finish. Time Taken: $($currentTime)"
Start-Sleep -Seconds 10
} while ($null -ne $Process)

#allow for suppression to install multiple language packs at the same time to save time
if ($SuppressReboot -ne $true)
{
#Force a reboot after installing or removing a language pack
$global:DSCMachineStatus = 1
}
#Force a reboot after installing or removing a language pack
$global:DSCMachineStatus = 1
}

<#
Expand All @@ -119,6 +154,10 @@ Function Set-TargetResource
.PARAMETER LanguagePackLocation
Not used in Test-TargetResource.

.PARAMETER SuppressReboot
If set to true the reboot required flag isn't set after successful installation of a
language pack, this can be useful to save time when installing multiple language packs.

.PARAMETER Ensure
Indicates whether the given language pack should be present or absent.
Set this property to Present to install the Language Pack, and Absent to uninstall
Expand All @@ -134,11 +173,15 @@ Function Test-TargetResource
[System.String]
$LanguagePackName,

[Parameter(Mandatory = $false)]
[Parameter()]
[System.String]
$LanguagePackLocation,

[Parameter()]
[Boolean]
$SuppressReboot=$false,

[Parameter(Mandatory = $false)]
[Parameter()]
[ValidateSet("Present","Absent")]
[System.String]
$Ensure="Present"
Expand All @@ -152,7 +195,8 @@ Function Test-TargetResource

Write-Verbose "Language Pack Found: $Found"

switch ($Ensure) {
switch ($Ensure)
{
'Present' {
$result = $Found
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ class MSFT_LanguagePack : OMI_BaseResource
{
[Key] String LanguagePackName;
[Write] String LanguagePackLocation;
[Write] Boolean SuppressReboot;
[Write, ValueMap{"Present","Absent"}, Values{"Present","Absent"}] String Ensure;
};

32 changes: 32 additions & 0 deletions Examples/Sample_CombinedResourceUse.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
Configuration Example
{

Import-DscResource -Module LanguageDsc

LanguagePack InstallLanguagePack
{
LanguagePackName = "en-GB"
LanguagePackLocation = "\\fileserver1\LanguagePacks\"
}

Language ConfigureLanguage {
IsSingleInstance = "Yes"
LocationID = 242
MUILanguage = "en-GB"
MUIFallbackLanguage = "en-US"
SystemLocale = "en-GB"
AddInputLanguages = @("0809:00000809")
RemoveInputLanguages = @("0409:00000409")
UserLocale = "en-GB"
CopySystem = $true
CopyNewUser = $true
Dependson = "[LanguagePack]InstallLanguagePack"
}

LocalConfigurationManager
{
RebootNodeIfNeeded = $true
ActionAfterReboot = 'ContinueConfiguration'
ConfigurationMode = 'ApplyAndAutoCorrect'
}
}
16 changes: 8 additions & 8 deletions Examples/Sample_ConfigureLanguage.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@

Configuration Example
{

Import-DscResource -Module LanguageDsc

Language ConfigureLanguage {
IsSingleInstance = "Yes"
LocationID = 242
MUILanguage = "en-GB"
Language ConfigureLanguage
{
IsSingleInstance = "Yes"
LocationID = 242
MUILanguage = "en-GB"
MUIFallbackLanguage = "en-US"
SystemLocale = "en-GB"
AddInputLanguages = @("0809:00000809")
SystemLocale = "en-GB"
AddInputLanguages = @("0809:00000809")
RemoveInputLanguages = @("0409:00000409")
UserLocale = "en-GB"
CopySystem = $true
CopySystem = $true
CopyNewUser = $true
}
}
Loading