Allow installing PowerShell scripts for the default user

This commit is contained in:
Manuel Thalmann 2024-03-21 00:06:34 +01:00
parent 1bc0226ca7
commit 3f09c682f6

View file

@ -4,9 +4,12 @@ $null = New-Module {
param ( param (
[Parameter(ParameterSetName="Global", Mandatory)] [Parameter(ParameterSetName="Global", Mandatory)]
[switch]$System, [switch]$System,
[Parameter(ParameterSetName="DefaultUser", Mandatory)]
[switch]$DefaultUser,
[Parameter(ParameterSetName="Home")] [Parameter(ParameterSetName="Home")]
[string]$HomeDir = "~", [string]$HomeDir = "~",
[Parameter(ParameterSetName="Global", Mandatory)] [Parameter(ParameterSetName="Global", Mandatory)]
[Parameter(ParameterSetName="DefaultUser")]
[Parameter(ParameterSetName="Home")] [Parameter(ParameterSetName="Home")]
[string]$Category = $null, [string]$Category = $null,
[Parameter(Position=0, Mandatory=$true)] [Parameter(Position=0, Mandatory=$true)]
@ -29,6 +32,14 @@ $null = New-Module {
} else { } else {
[System.Collections.Generic.List[string]] $shells = @(); [System.Collections.Generic.List[string]] $shells = @();
if ($DefaultUser) {
if ($IsWindows) {
$HomeDir = "C:/Users/Default";
} else {
$HomeDir = "/etc/skel"
}
}
if (Get-Command pwsh -ErrorAction SilentlyContinue) { if (Get-Command pwsh -ErrorAction SilentlyContinue) {
$shells.Add("pwsh"); $shells.Add("pwsh");
} }
@ -44,6 +55,21 @@ $null = New-Module {
Push-Location ~; Push-Location ~;
$profiles = $profiles | ForEach-Object { [System.IO.Path]::GetRelativePath($(Get-Location), $_); }; $profiles = $profiles | ForEach-Object { [System.IO.Path]::GetRelativePath($(Get-Location), $_); };
$profiles | ForEach-Object {
$fileName = "$HomeDir/$_";
$dirName = Split-Path -Parent $fileName;
if (-not (Test-Path -PathType Container $dirName)) {
$null = New-Item -ItemType Directory -Force $dirName;
}
if ((Test-Path -PathType Leaf $fileName) -and (-not $Overwrite)) {
Add-Content -Force "$fileName" "`n$Statement";
} else {
Set-Content -Force "$fileName" "$Statement";
}
};
} }
if ($Category) { if ($Category) {
@ -54,21 +80,6 @@ $null = New-Module {
$profiles = $profiles | ForEach-Object { Join-Path (Split-Path -Parent $_) "conf.d" "$Category.ps1"; }; $profiles = $profiles | ForEach-Object { Join-Path (Split-Path -Parent $_) "conf.d" "$Category.ps1"; };
} }
$profiles | ForEach-Object {
$fileName = "$HomeDir/$_";
$dirName = Split-Path -Parent $fileName;
if (-not (Test-Path -PathType Container $dirName)) {
$null = New-Item -ItemType Directory -Force $dirName;
}
if ((Test-Path -PathType Leaf $fileName) -and (-not $Overwrite)) {
Add-Content -Force "$fileName" "`n$Statement";
} else {
Set-Content -Force "$fileName" "$Statement";
}
};
Pop-Location; Pop-Location;
} }