Add a script for managing setup options
This commit is contained in:
parent
bb3ea5d555
commit
e84b2f9583
1 changed files with 102 additions and 0 deletions
102
scripts/Windows/Scripts/SetupConfig.ps1
Normal file
102
scripts/Windows/Scripts/SetupConfig.ps1
Normal file
|
@ -0,0 +1,102 @@
|
|||
using namespace Microsoft.Win32;
|
||||
using namespace System.Security.AccessControl;
|
||||
using namespace System.Security.Principal;
|
||||
|
||||
$null = New-Module {
|
||||
[string] $configRoot = "HKLM:\Software\PortValhalla";
|
||||
[string] $stageOption = "Stage";
|
||||
[RegistryKey] $key = $null;
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the registry key containing options related to the setup.
|
||||
#>
|
||||
function Get-SetupConfigKey() {
|
||||
if (-not (Test-Path $configRoot)) {
|
||||
$key = New-Item $configRoot;
|
||||
$acl = Get-Acl $configRoot;
|
||||
|
||||
$acl.AddAccessRule(
|
||||
[RegistryAccessRule]::new(
|
||||
[SecurityIdentifier]::new([WellKnownSidType]::BuiltinUsersSid, $null),
|
||||
[RegistryRights]::FullControl,
|
||||
[InheritanceFlags]::ObjectInherit -bor [InheritanceFlags]::ContainerInherit,
|
||||
[PropagationFlags]::None,
|
||||
[AccessControlType]::Allow));
|
||||
|
||||
Set-Acl $configRoot $acl;
|
||||
} else {
|
||||
$key = Get-Item $configRoot;
|
||||
}
|
||||
|
||||
return $key;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the value of an option related to the setup.
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the option value to get.
|
||||
#>
|
||||
function Get-SetupOption() {
|
||||
param(
|
||||
[string] $Name
|
||||
)
|
||||
|
||||
$key = Get-SetupConfigKey;
|
||||
|
||||
if ($key.GetValueNames().Contains($Name)) {
|
||||
return $key.GetValue($Name);
|
||||
} else {
|
||||
return $null;
|
||||
}
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Sets the value of an option related to the setup.
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the option to set.
|
||||
|
||||
.PARAMETER Value
|
||||
The value to set the option to.
|
||||
#>
|
||||
function Set-SetupOption() {
|
||||
param(
|
||||
[string] $Name,
|
||||
$Value
|
||||
)
|
||||
|
||||
if ($Value -is [string]) {
|
||||
|
||||
}
|
||||
|
||||
$key = Get-SetupConfigKey;
|
||||
return $key.SetValue($Value);
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the name of the current setup stage.
|
||||
#>
|
||||
function Get-Stage() {
|
||||
return Get-SetupOption $stageOption;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Sets the current stage.
|
||||
|
||||
.PARAMETER Name
|
||||
The name to set the current stage to.
|
||||
#>
|
||||
function Set-Stage() {
|
||||
param(
|
||||
[string] $Name
|
||||
)
|
||||
|
||||
$null = Set-SetupOption $stageOption $Name;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue