Вот такая простая на первый взгляд задача.
До того как был поставвлен Citrix был простой батник который запускал определённую программу у пользователей. Когда поставили citrix то данный батник запускал уже он и всё бы было хорошо если бы не поставили тестовый сервер и для него этот батник отличался.
Для тех кто имел доступ только на рабочий сервер, на самом деле программу запускал не citrix а галочка у пользователя “Запуск программы”. Но ни кто об этом даже не подозревал, а вот когда добавили новый сервер, тут и выяснилось, что citrix не может отработать новый батник.
И так, задача предельно ясна, убрать галочку “Запуск программы”
В ADSI ни чего похожего на данную галочку я не нашёл. В интернете все статьи радостно сообщают как установить программу, поменять, но не как отключить. Сразу скажу, все сервера у нас на русском языке и как правильно описать это поиску на английском я не знал.
В PowerShell можно очистить поле “Имя файла программы” и “Рабочая папка”.
Только не выполняйте этой строчки у себя!!!
get-qaduser * | ForEach-Object {set-qaduser $_.name -TsInitialProgram $null -TsWorkDirectory $null}
Вот после этого у меня и случилось счастье, во всём домене стёрлись эти две строчки (а они мне ни где и не нужны были), но – там где они были галочка осталась, а там где их не было, галочка поставилась.
Фильм ужасов отдыхает, конец рабочего дня, отваливается citrix, у пользователей вместо запуска программы открывается рабочий стол. Начальство отдало приказ ночевать, но к утру чтобы всё работало. И старый сервер и новый.
По скольку идей на данный момент не было, я написал Василию Гусеву и в ожидании пока он появится в сети сел вручную снимать галочки во всём домене.
Когда Василий появился, первым делом было предложено вручную обнулить атрибут, так как PoSh с оснастками по-умолчанию этого не умеет.
Set-QADObject -ObjectAttributes @{"Атрибут" = $Null}
Всё бы ни чего, но какой атрибут обнулять?
Следующей идеей было назначить какую-нибудь программу и в ADSI поискать как она называется и поглядеть атрибуты рядом. Назначается всё просто
Get-QADUser zorion | Set-QADUser -TsInitialProgram "cmd.exe" -TsWorkDirectory "c:\windows"
Но в ADSI ни чего похожего не появилось, тогда я сел работатьт руками, а Василий дальше головой. Через десять минут получил короткую инструкцию “userParameters”
Тут же проверив на одном пользователе, сразу натравил на всех.
Get-QADUser * | Set-QADObject -ObjectAttributes @{"userParameters" = $Null}
Василий пошёл простым путём, взял двух пользователей, одного с проставленными атрибутами, другого которому никогда их не проставляли.
Кстати, в ADSI этот параметр выглядит примерно так.
CtxCfgPresent PCtxCfgPresent㔵攱戰ぢ"CtxInitialProgram㌶搶㐶攲㔶㠷㔶〰CtxCfgFlags1〰て〲〸 CtxWorkDirectory㌶愳挵㜷㤶收㐶昶㜷㌷〰
Судя по словам он был сделан специально для citrix.