SCCM; Applications; Detection Method; User Environment variables;

Про Приложения (Applications), распространяемые на Пользователя, Detection Method, и «Переменные Окружения» («Environment variables»)
Не очевидный, на первый взгляд момент, который становится логичнее когда понимаешь что такое переменные окружения и кто их должен интерпретировать.

При раскатывании приложения на пользователя (в Deployment Type / User Experience, «Install for user») и использования в Detection Method переменных окружения пользователя (%AppData%, %User%), эти самые переменные окружения можно использовать только в скриптах, т.е. в режиме «Use a custom script to detect…», хотя логично было бы использовать стандартные методы.

Пример: Хотим распространить некую «Подпись» (Signature) в Outlook (мы сейчас не говорим про единый стандарт подписи в компании, про это как-нибудь отдельно).
Чтобы это сделать мы должны скопировать заранее подготовленные файлы подписей в профиль пользователя, в каталог:

В cmd это:

%APPDATA%\Microsoft\Signatures\

В PowerShell:

Join-Path $($env:APPDATA) "Microsoft\Signatures\"

Создаем приложение, которое в Detection Method, будет опираться на переменные окружения пользователя.

Application на вкладке Detection Method от нас требуется проверка, что операция по разворачиванию приложения выполнилась правильно, а правильно для нас — проверить что файлы на месте (для простоты один файл и этот файл будет называться «%APPDATA%\Microsoft\signatures\ManualReply.htm»)

Так и подмывает сделать так:

Но тут нас ждёт разочарование. Движок Detection Method-а работает в контексте SYSTEM, соответственно переменные окружения будут от SYSTEM а не пользователя, а вот VBS/Powershell/JS запустятся в контексте пользователя (как и Installation / Uninstall program). То есть, хочешь использовать пользовательские переменные окружения — используй скрипт.

В нашем прмере проверка может выглядеть так:

if(Test-Path (Join-Path $env:APPDATA "Microsoft\Signatures\ManualReply.htm")){$true}

Note:
К стати у Detection Method, на основе скрипта PowerShell, есть одна неприятная особенность, если в профиль пользователя, подсунуть вывод в STDOUT/STDERR в момент вызова скрипта проверки, Detection Method будет срабатывать не правильно, поскольку PowerShell.exe вызывается без праметра «-NoProfile».

Реклама
Запись опубликована в рубрике SCCM, Troubleshooting. Добавьте в закладки постоянную ссылку.

1 отзыв на “SCCM; Applications; Detection Method; User Environment variables;

  1. ili:

    в очередной раз спасибо!!!

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s