Persist per-machine welcome location

This commit is contained in:
2026-09-17 14:59:35 -06:00
parent 2de1105ecd
commit 351adb0bdc
3 changed files with 46 additions and 6 deletions
+5
View File
@@ -21,6 +21,11 @@ guardar credenciales. Obtiene:
- `location` del objeto de equipo. - `location` del objeto de equipo.
- La OU padre inmediata a partir de `distinguishedName`. - La OU padre inmediata a partir de `distinguishedName`.
Los valores de equipo `SGU_WELCOME_LOCATION` y
`SGU_WELCOME_ORGANIZATIONAL_UNIT` pueden fijar ambos datos en una máquina
concreta. Tienen prioridad sobre el directorio y sobreviven cuando la GPO
restaura el comando genérico de inicio.
El saludo usa `Bienvenido/ubicado` para `Male` y `Bienvenida/ubicada` para El saludo usa `Bienvenido/ubicado` para `Male` y `Bienvenida/ubicada` para
`Female`. Cuando el enriquecimiento no produjo este dato, utiliza la redacción `Female`. Cuando el enriquecimiento no produjo este dato, utiliza la redacción
neutral `Te damos la bienvenida` y `Ubicación:`. El texto secundario sigue estas neutral `Te damos la bienvenida` y `Ubicación:`. El texto secundario sigue estas
+20 -4
View File
@@ -305,6 +305,14 @@ if (-not (Test-Path -LiteralPath $BaseImagePath -PathType Leaf)) {
$userName = [Environment]::UserName $userName = [Environment]::UserName
$metadata = $null $metadata = $null
$machineLocation = [Environment]::GetEnvironmentVariable('SGU_WELCOME_LOCATION', 'Machine')
$machineOrganizationalUnit = [Environment]::GetEnvironmentVariable(
'SGU_WELCOME_ORGANIZATIONAL_UNIT',
'Machine')
if (-not $machineLocation) { $machineLocation = $env:SGU_WELCOME_LOCATION }
if (-not $machineOrganizationalUnit) {
$machineOrganizationalUnit = $env:SGU_WELCOME_ORGANIZATIONAL_UNIT
}
if (-not $SkipDirectoryLookup) { if (-not $SkipDirectoryLookup) {
try { try {
$metadata = Get-DirectoryWelcomeMetadata -UserName $userName -MachineName $ComputerName $metadata = Get-DirectoryWelcomeMetadata -UserName $userName -MachineName $ComputerName
@@ -320,8 +328,8 @@ if (-not $PSBoundParameters.ContainsKey('DisplayName')) {
if (-not $DisplayName) { if (-not $DisplayName) {
$DisplayName = $userName $DisplayName = $userName
} }
if (-not $PSBoundParameters.ContainsKey('Location') -and $metadata) { if (-not $PSBoundParameters.ContainsKey('Location')) {
$Location = $metadata.Location $Location = if ($machineLocation) { $machineLocation } elseif ($metadata) { $metadata.Location } else { $null }
} }
$genderWasProvided = $PSBoundParameters.ContainsKey('Gender') $genderWasProvided = $PSBoundParameters.ContainsKey('Gender')
if (-not $genderWasProvided -and $metadata -and $metadata.Gender -in @('Male', 'Female')) { if (-not $genderWasProvided -and $metadata -and $metadata.Gender -in @('Male', 'Female')) {
@@ -330,8 +338,16 @@ if (-not $genderWasProvided -and $metadata -and $metadata.Gender -in @('Male', '
$Gender = $metadata.Gender $Gender = $metadata.Gender
} }
$welcomeHeading = Get-WelcomeHeading -Gender $Gender $welcomeHeading = Get-WelcomeHeading -Gender $Gender
if (-not $PSBoundParameters.ContainsKey('OrganizationalUnit') -and $metadata) { if (-not $PSBoundParameters.ContainsKey('OrganizationalUnit')) {
$OrganizationalUnit = $metadata.OrganizationalUnit $OrganizationalUnit = if ($machineOrganizationalUnit) {
$machineOrganizationalUnit
}
elseif ($metadata) {
$metadata.OrganizationalUnit
}
else {
$null
}
} }
$locationText = Get-WelcomeLocationText -Room $Location -OuName $OrganizationalUnit -Gender $Gender $locationText = Get-WelcomeLocationText -Room $Location -OuName $OrganizationalUnit -Gender $Gender
+21 -2
View File
@@ -16,7 +16,9 @@ function Invoke-WelcomeFixture {
$DirectoryGender, $DirectoryGender,
[string]$ExplicitGender, [string]$ExplicitGender,
[string]$DirectoryLocation = 'Sala de pruebas', [string]$DirectoryLocation = 'Sala de pruebas',
[string]$DirectoryOu = 'Laboratorio' [string]$DirectoryOu = 'Laboratorio',
[string]$MachineLocation,
[string]$MachineOu
) )
# Replace only the external directory lookup. Execute the actual script, # Replace only the external directory lookup. Execute the actual script,
@@ -43,11 +45,19 @@ function Invoke-WelcomeFixture {
} }
if ($ExplicitGender) { $parameters.Gender = $ExplicitGender } if ($ExplicitGender) { $parameters.Gender = $ExplicitGender }
$previousLocalAppData = $env:LOCALAPPDATA $previousLocalAppData = $env:LOCALAPPDATA
$previousMachineLocation = $env:SGU_WELCOME_LOCATION
$previousMachineOu = $env:SGU_WELCOME_ORGANIZATIONAL_UNIT
try { try {
$env:LOCALAPPDATA = $TestDrive $env:LOCALAPPDATA = $TestDrive
$env:SGU_WELCOME_LOCATION = $MachineLocation
$env:SGU_WELCOME_ORGANIZATIONAL_UNIT = $MachineOu
& $testScript @parameters & $testScript @parameters
} }
finally { $env:LOCALAPPDATA = $previousLocalAppData } finally {
$env:LOCALAPPDATA = $previousLocalAppData
$env:SGU_WELCOME_LOCATION = $previousMachineLocation
$env:SGU_WELCOME_ORGANIZATIONAL_UNIT = $previousMachineOu
}
} }
Describe 'Welcome wallpaper with AD metadata' { Describe 'Welcome wallpaper with AD metadata' {
@@ -81,4 +91,13 @@ Describe 'Welcome wallpaper with AD metadata' {
-DirectoryOu 'Centro de Experiencia Digital' -DirectoryOu 'Centro de Experiencia Digital'
$result.LocationText | Should Be 'Acceso al Aula Flexible del Centro de Experiencia Digital.' $result.LocationText | Should Be 'Acceso al Aula Flexible del Centro de Experiencia Digital.'
} }
It 'keeps machine location metadata when the GPO command has no location arguments' {
$result = Invoke-WelcomeFixture -DirectoryGender $null `
-DirectoryLocation 'Sala de pruebas' `
-DirectoryOu 'Laboratorio' `
-MachineLocation 'Aula Flexible' `
-MachineOu 'Centro de Experiencia Digital'
$result.LocationText | Should Be 'Acceso al Aula Flexible del Centro de Experiencia Digital.'
}
} }