Create dedicated script for creating users
This commit is contained in:
parent
2da5240d3f
commit
bcb2845cd4
2 changed files with 104 additions and 96 deletions
|
@ -91,102 +91,7 @@ $null = New-Module {
|
||||||
Set-Stage ([SetupStage]::CreateUser);
|
Set-Stage ([SetupStage]::CreateUser);
|
||||||
}
|
}
|
||||||
([SetupStage]::CreateUser) {
|
([SetupStage]::CreateUser) {
|
||||||
$users = @(Get-Users);
|
Install-ValhallaUsers;
|
||||||
$i = Get-CurrentUser;
|
|
||||||
|
|
||||||
for (; $i -lt $users.Count; $i++) {
|
|
||||||
$name = $users[$i];
|
|
||||||
$msAccount = Get-UserConfig -UserName $name "microsoftAccount";
|
|
||||||
Set-CurrentUser $i;
|
|
||||||
|
|
||||||
if (Test-Admin) {
|
|
||||||
Disable-BootMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
while ((Get-UserStage) -ne ([UserStage]::Completed)) {
|
|
||||||
switch (Get-UserStage) {
|
|
||||||
($null) {
|
|
||||||
Set-UserStage ([UserStage]::Create);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
([UserStage]::Create) {
|
|
||||||
if ($env:UserName -ne $name) {
|
|
||||||
$userInfo = @{
|
|
||||||
name = $name;
|
|
||||||
msAccount = $msAccount;
|
|
||||||
};
|
|
||||||
|
|
||||||
New-ValhallaUser @userInfo;
|
|
||||||
|
|
||||||
if ($msAccount) {
|
|
||||||
logoff;
|
|
||||||
} else {
|
|
||||||
Restart-Intermediate;
|
|
||||||
}
|
|
||||||
|
|
||||||
exit;
|
|
||||||
} else {
|
|
||||||
if ($msAccount) {
|
|
||||||
if (-not (Test-Admin)) {
|
|
||||||
Invoke-OneShot DisableUAC;
|
|
||||||
Restart-Intermediate -NoRegister;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Clear-SetupRegistration;
|
|
||||||
Disable-OneShotListener;
|
|
||||||
}
|
|
||||||
|
|
||||||
Set-UserStage ([UserStage]::Configure);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
(([UserStage]::Configure)) {
|
|
||||||
$displayName = Get-UserConfig -UserName $name "displayName";
|
|
||||||
|
|
||||||
$userArguments = @{
|
|
||||||
name = $name;
|
|
||||||
};
|
|
||||||
|
|
||||||
if ($displayName) {
|
|
||||||
$userArguments.fullName = $displayName;
|
|
||||||
}
|
|
||||||
|
|
||||||
$adminGroup = @{
|
|
||||||
SID = [SecurityIdentifier]::new([WellKnownSidType]::BuiltinAdministratorsSid, $null);
|
|
||||||
};
|
|
||||||
|
|
||||||
Set-LocalUser @userArguments;
|
|
||||||
Deploy-SoftwareAction -Action ([InstallerAction]::ConfigureUser);
|
|
||||||
Remove-LocalGroupMember -Member "$name" @adminGroup -ErrorAction SilentlyContinue;
|
|
||||||
|
|
||||||
foreach ($group in Get-UserConfig -UserName "$name" "groups") {
|
|
||||||
Add-LocalGroupMember -Member "$name" -Name "$group";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (-not $msAccount) {
|
|
||||||
net user $name /logonpasswordchg:yes;
|
|
||||||
}
|
|
||||||
|
|
||||||
Set-UserStage ([UserStage]::Cleanup);
|
|
||||||
}
|
|
||||||
([UserStage]::Cleanup) {
|
|
||||||
$user = Get-SetupUser;
|
|
||||||
Disable-LocalUser $name;
|
|
||||||
Enable-LocalUser $user;
|
|
||||||
Set-AutologinUser $user;
|
|
||||||
Unregister-WslDistribution;
|
|
||||||
Set-UserStage ([UserStage]::Completed);
|
|
||||||
Restart-Intermediate;
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($user in $users) {
|
|
||||||
Enable-LocalUser $user;
|
|
||||||
}
|
|
||||||
|
|
||||||
Set-IsFinished $true;
|
Set-IsFinished $true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,114 @@ using namespace System.Management.Automation.Host;
|
||||||
using namespace System.Security.Principal;
|
using namespace System.Security.Principal;
|
||||||
|
|
||||||
$null = New-Module {
|
$null = New-Module {
|
||||||
|
. "$PSScriptRoot/Deployment.ps1";
|
||||||
. "$PSScriptRoot/../../Common/Scripts/Config.ps1";
|
. "$PSScriptRoot/../../Common/Scripts/Config.ps1";
|
||||||
. "$PSScriptRoot/../../Common/Scripts/Operations.ps1";
|
. "$PSScriptRoot/../../Common/Scripts/Operations.ps1";
|
||||||
. "$PSScriptRoot/../../Common/Types/OneShotTask.ps1";
|
. "$PSScriptRoot/../../Common/Types/OneShotTask.ps1";
|
||||||
$loggedInUserOption = "LoggedInUser";
|
$loggedInUserOption = "LoggedInUser";
|
||||||
|
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Installs all pending users to the system.
|
||||||
|
#>
|
||||||
|
function Install-ValhallaUsers {
|
||||||
|
$users = @(Get-Users);
|
||||||
|
$i = Get-CurrentUser;
|
||||||
|
|
||||||
|
for (; $i -lt $users.Count; $i++) {
|
||||||
|
Set-CurrentUser $i;
|
||||||
|
$name = $users[$i];
|
||||||
|
$msAccount = Get-UserConfig -UserName $name "microsoftAccount";
|
||||||
|
|
||||||
|
if (Test-Admin) {
|
||||||
|
Disable-BootMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
while ((Get-UserStage) -ne ([UserStage]::Completed)) {
|
||||||
|
switch (Get-UserStage) {
|
||||||
|
($null) {
|
||||||
|
Set-UserStage ([UserStage]::Create);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
([UserStage]::Create) {
|
||||||
|
if ($env:UserName -ne $name) {
|
||||||
|
$userInfo = @{
|
||||||
|
name = $name;
|
||||||
|
msAccount = $msAccount;
|
||||||
|
};
|
||||||
|
|
||||||
|
New-ValhallaUser @userInfo;
|
||||||
|
|
||||||
|
if ($msAccount) {
|
||||||
|
logoff;
|
||||||
|
} else {
|
||||||
|
Restart-Intermediate;
|
||||||
|
}
|
||||||
|
|
||||||
|
exit;
|
||||||
|
} else {
|
||||||
|
if ($msAccount) {
|
||||||
|
if (-not (Test-Admin)) {
|
||||||
|
Invoke-OneShot DisableUAC;
|
||||||
|
Restart-Intermediate -NoRegister;
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
Clear-SetupRegistration;
|
||||||
|
Disable-OneShotListener;
|
||||||
|
}
|
||||||
|
|
||||||
|
Set-UserStage ([UserStage]::Configure);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
([UserStage]::Configure) {
|
||||||
|
$displayName = Get-UserConfig -UserName $name "displayName";
|
||||||
|
|
||||||
|
$userInfo = @{
|
||||||
|
name = $name;
|
||||||
|
};
|
||||||
|
|
||||||
|
if ($displayName) {
|
||||||
|
$userInfo.fullName = $displayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
$adminGroup = @{
|
||||||
|
SID = [SecurityIdentifier]::new([WellKnownSidType]::BuiltinAdministratorsSid, $null);
|
||||||
|
};
|
||||||
|
|
||||||
|
Set-LocalUser @userInfo;
|
||||||
|
Deploy-SoftwareAction -Action ConfigureUser;
|
||||||
|
Remove-LocalGroupMember -Member "$name" @adminGroup -ErrorAction SilentlyContinue;
|
||||||
|
|
||||||
|
foreach ($group in Get-UserConfig -UserName "$name" "groups") {
|
||||||
|
Add-LocalGroupMember -Member "$name" -Name "$group";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not $msAccount) {
|
||||||
|
net user $name /logonpasswordchg:yes;
|
||||||
|
}
|
||||||
|
|
||||||
|
Set-UserStage ([UserStage]::Cleanup);
|
||||||
|
}
|
||||||
|
([UserStage]::Cleanup) {
|
||||||
|
$user = Get-SetupUser;
|
||||||
|
Disable-LocalUser $name;
|
||||||
|
Enable-LocalUser $user;
|
||||||
|
Set-AutologinUser $user;
|
||||||
|
Unregister-WslDistribution;
|
||||||
|
Set-UserStage ([UserStage]::Completed);
|
||||||
|
Restart-Intermediate;
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($user in $users) {
|
||||||
|
Enable-LocalUser $user;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
<#
|
<#
|
||||||
.SYNOPSIS
|
.SYNOPSIS
|
||||||
Creates a new user for the PortValhalla setup.
|
Creates a new user for the PortValhalla setup.
|
||||||
|
|
Loading…
Reference in a new issue