Назад | Перейти на главную страницу

Доступ к атрибуту AD при первом входе в систему?

Мне было поручено улучшить наше текущее развертывание образа. Прямо сейчас мы выполняем значительную часть ручной настройки после создания образа, чтобы сократить объем работы для пользователей, которые получают новую машину. Хотелось бы максимально автоматизировать это. У нас много волонтеров и стажеров на короткий рабочий день, поэтому экономия времени здесь быстро окупится.

Одна из задач - настроить места для сохранения по умолчанию в Word и Excel. У некоторых пользователей установлена ​​переменная среды User HomeDrive, но не у всех (и ни у кого из студентов-заочников). У всех пользователей установлен атрибут ActiveDirectory UserSharedFolder. Это не сохраняется как переменная среды. В идеале для места сохранения по умолчанию должно быть установлено значение этого атрибута AD. Для каждого пользователя он разный.

Есть предложения, как с этим справиться?

Я определил, что место сохранения по умолчанию находится в реестре. Я хотел бы использовать настройки групповой политики для его установки, но я не могу получить доступ к атрибуту Active Directory из GPP.

Как мне получить к этому доступ в скрипте? Его нужно будет запустить в контексте пользователя. У меня не будет доступа к модулю Powershell ActiveDirectory на большинстве машин.

Есть ли более разумный альтернативный способ сделать это?

В настройках групповой политики вы можете выполнить LDAP-запрос в настройке уровня элемента и сохранить результат в переменной среды. На эту переменную среды можно ссылаться в элементе настроек реестра. (Или на него ссылается сценарий, который запускается позже, например сценарий входа пользователя).

Чтобы установить переменную среды с помощью групповой политики:

  • Отредактируйте GPO (или создайте новый)
  • Перейдите в User Config -> Preferences -> Windows Settings -> Environment.
  • Создайте новую переменную среды
  • Имя = MYSAVELOCATION
  • Значение = %_MYSAVELOCATION%
  • В этом случае это должна быть пользовательская переменная.
  • В разделе "Общие" выберите "Таргетинг на уровне элементов".
  • Нажмите Targeting ...
  • Новый элемент -> Запрос LDAP
  • Фильтр = (&(objectClass=user)(sAMAccountName=%USERNAME%))
  • Привязка = LDAP:
  • Атрибут = userSharedFolder (Я думаю, что это тот атрибут AD, который вам нужен. Еще раз проверьте это!)
  • Имя переменной среды = _MYSAVELOCATION
  • Нажмите ОК

Затем вы можете создать элемент предпочтений групповой политики реестра, который ссылается на% MYSAVELOCATION%. Вы также можете ссылаться на переменную среды в пакетном файле или скрипте, который запускается после GPO подал заявку.

Если вы хотите сделать то же самое в PowerShell, вы можете сделать это (например, в сценарии входа пользователя). Это не зависит от модулей PowerShell AD:

$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

Оттуда он находится в переменной среды, как и в настройках групповой политики. Вы также можете просто взять значение $ user_shared_folder и записать его прямо в реестр с помощью Set-ItemProperty, переменная среды не требуется. Однако сохранение его в переменной среды может быть удобно, если у вас есть сценарий или приложение, которым может потребоваться ссылаться на него позже.

Для справки, я использую описанные выше методы, чтобы получить полное имя и адрес электронной почты из Active Directory и использовать их для настройки приложений (например, для персонализации Office). Вы также можете сделать аналогичный запрос с WMI, чтобы получить модель компьютера и серийный номер.