Acessar um atributo do AD em um cenário de logon pela primeira vez?

2

Recebi a tarefa de melhorar nossa implantação de imagem atual. No momento, fazemos uma boa quantidade de configuração manual após a geração de imagens para reduzir o trabalho dos usuários que recebem uma máquina recém-criada. Eu gostaria de automatizar isso o máximo possível. Temos muitos voluntários de curta duração e estagiários, por isso a economia de tempo aqui irá aumentar rapidamente.

Uma tarefa é configurar os locais de salvamento padrão no Word e no Excel. Alguns usuários têm o conjunto de variáveis de ambiente HomeDrive do usuário, mas não todos (e nenhum dos alunos de curta duração). Todos os usuários têm o atributo UserSharedFolder ActiveDirectory definido. Isso não é salvo como uma variável de ambiente. Idealmente, o local de salvamento padrão seria definido com o valor desse atributo do AD. É diferente para cada usuário.

Alguma sugestão sobre como gerenciar isso?

Eu determinei que o local de salvamento padrão está no registro. Gostaria de usar as Preferências da Política de Grupo para defini-lo, mas não consigo acessar um atributo do Active Directory do GPP.

Como eu acessaria isso em um script? Ele precisará ser executado no contexto do usuário. Não terei acesso ao módulo Powershell ActiveDirectory na maioria das máquinas.

Existe uma maneira alternativa de fazer isso que faz mais sentido?

    
por Quinten 28.04.2014 / 21:15

1 resposta

3

Nas Preferências da Política de Grupo, você pode fazer uma consulta LDAP na segmentação por nível de item e armazenar o resultado em uma variável de ambiente. Essa variável de ambiente pode ser referenciada por um item de preferência de registro. (Ou referenciado por um script que é executado posteriormente, por exemplo, um script de logon do usuário).

Para definir a variável de ambiente usando a Diretiva de Grupo:

  • Edite o GPO (ou crie um novo)
  • Ir para a configuração do usuário - > Preferências - > Configurações do Windows - > Meio Ambiente
  • Crie uma nova variável de ambiente
  • Nome = MYSAVELOCATION
  • Valor = %_MYSAVELOCATION%
  • Nesse caso, deve ser uma variável de usuário
  • Em Comum, selecione Segmentação no nível do item
  • Clique em Segmentação ...
  • Novo item - > Consulta LDAP
  • Filtro = (&(objectClass=user)(sAMAccountName=%USERNAME%))
  • Ligação = LDAP:
  • Atributo = userSharedFolder ( acho que esse é o atributo do AD que você quer. Verifique novamente! )
  • Nome da variável de ambiente = _MYSAVELOCATION
  • Clique em OK

Em seguida, você pode criar um item de preferência de diretiva de grupo do registro que referencia% MYSAVELOCATION%. Você também pode fazer referência à variável de ambiente em um arquivo em lotes ou script que é executado após o GPO ter sido aplicado.

Se você quisesse fazer o equivalente no PowerShell, poderia fazer isso (por exemplo, em um script de logon do usuário). Isso não depende dos módulos AD do PowerShell:

$searcher = New-Object System.DirectoryServices.DirectorySearcher
$searcher.SearchRoot = New-Object System.DirectoryServices.DirectoryEntry
$searcher.Filter = "(&(objectClass=user)(sAMAccountName=$env:USERNAME))"
$searcher.SearchScope = "Subtree"

# I am assuming userShareFolder is the AD attribute you want
# Double-check that and update this lin accordingly.
$searcher.PropertiesToLoad.Add("userSharedFolder") | Out-Null

$result = $searcher.FindOne()

# All of $result.Properties must be lower-case!
$user_shared_folder = $result.Properties.usersharedfolder

Write-Output "User Shared Folder = $user_shared_folder"

# Update the Environment Variables (two-step process)
# Call SetEnvironmentVariable to make the change persistent.
# Update $env:variable so the change affects the current process.
[Environment]::SetEnvironmentVariable("MYSAVELOCATION", $user_shared_folder, "User")
$env:MYSAVELOCATION = $user_shared_folder

De lá, ele está em uma variável de ambiente, assim como nas Preferências da Política de Grupo. Você também pode pegar o valor de $ user_shared_folder e gravá-lo diretamente no registro com Set-ItemProperty, sem necessidade de variáveis de ambiente. No entanto, mantê-lo em uma variável de ambiente pode ser útil se você tiver um script ou aplicativo que precise referenciá-lo posteriormente.

Para referência, eu uso as técnicas descritas acima para obter o nome completo e o endereço de e-mail do Active Directory e usá-los para a configuração do aplicativo (por exemplo, personalizando o Office). Você também pode fazer uma consulta semelhante com o WMI para obter o modelo do computador e o número de série.

    
por 28.04.2014 / 23:26