Existem 2 opções aqui:
1. usar psgetsid.exe
para identificar a correspondência do nome de usuário e do SID do usuário que você vê em HKEY_USERS e, em seguida, usá-lo no script em lote.
No mesmo lote, você pode usar psexec.exe
para executar a alteração de registro necessária nos computadores remotos.
Você pode passar um arquivo de texto com uma lista dos computadores desses programas.
Usage: psgetsid [\computer[,computer2[,...] | @file] [-u Username [-p Password]]] [account | SID]
-u Specifies optional user name for login to
remote computer.
-p Specifies optional password for user name. If you omit this
you will be prompted to enter a hidden password.
account PsGetSid will report the SID for the specified user account
rather than the computer.
SID PsGetSid will report the account for the specified SID.
computer Direct PsGetSid to perform the command on the remote
computer or computers specified. If you omit the computer
name PsGetSid runs the command on the local system,
and if you specify a wildcard (\*), PsGetSid runs the
command on all computers in the current domain.
@file PsGetSid will execute the command on each of the computers listed in the file.
2. A segunda opção é executar este script Powershell nos computadores remotos:
New-PSDrive HKU Registry HKEY_USERS
$allusers = Get-ChildItem -Path hku:\ | select -ExpandProperty name
foreach($i in $allusers)
{
if (($i -like '*S-1-5-21*') -and ($i -notlike '*_Classes*')) {
"Users found:"
$i
Set-ItemProperty -Path "Microsoft.PowerShell.Core\Registry::$i\Keyboard Layout\Preload" -Name 1 -Value 409
Set-ItemProperty -Path "Microsoft.PowerShell.Core\Registry::$i\Keyboard Layout\Preload" -Name 2 -Value 407
}
}
Ele examinará todos os SIDs disponíveis no HKEY_USERS e aplicará a configuração a cada um deles se eles atenderem ao filtro.
P.S. Todos os usuários de AD SIDs começam com S-1-5-21, é por isso que eu usei no filtro. Eu também ignorei todas as colmeias com _Classes no final.