У меня есть тип развертывания со следующими атрибутами:
Technology: MSI
Installation behavior: Install for system
Logon requirement: Whether or not a user is logged on
Installation program visibility: Hidden
когда msiexec
выполняется клиентом, в журнале AppEnforce.log отображается следующая запись:
Выполнение командной строки: "C: \ WINDOWS \ system32 \ msiexec.exe" / i "AppleApplicationSupport.msi" / qn с контекст пользователя
Это странно, поскольку я выбрал «Установить для системы».
Поиск в Google показывает некоторые предположения что ведение журнала неверно:
что бы это ни стоило, я заметил, что appenforce.log, кажется, всегда говорит его в контексте пользователя, даже если это не так.
Я нашел еще несколько похожих комментариев, но не нашел окончательной ссылки. Это оставляет мне следующие вопросы:
Действительно ли AppEnforce.log регистрирует контекст как пользователь, даже если он выполняется как система?
TL; DR: AppEnforce.log действительно неправильно регистрирует контекст (по крайней мере, для технологии «Script Installer»).
Я создал тип развертывания со следующими атрибутами:
Technology: Script Installer
Installation behavior: Install for system
Logon requirement: Whether or not a user is logged on
Installation program visibility: Hidden
Installation program: powershell .\Install-Application.ps1
Install-Application.ps1
создает файл журнала с именем script-install-test-YYYY-MM-DD__HH-MM-SS.log
. Этот сценарий находится в конце этой публикации.
Затем я развернул этот тип развертывания и посмотрел AppEnforce.log
и script-install-test-X.log
.
Я нашел следующую запись в AppEnforce.log
:
Выполнение командной строки: «C: \ WINDOWS \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe». \ Install-Application.ps1 с контекстом пользователя
Через несколько секунд после этого script-install-test-X.log
был записан в папку script-install-test-SYSTEM
. В SYSTEM
суффикс указывает, что сценарий был запущен как SYSTEM.
Для технологии «установщик сценариев» контекст, записанный в AppEnforce.log
сообщения стиля
Выполнение командной строки: «C: \ WINDOWS \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe». \ Install-Application.ps1 с контекстом пользователя
может быть неправильно записан как «пользовательский контекст», даже если командная строка выполняется как системный контекст.
Я не проводил тест для MSI Installer Technology. Однако, учитывая, что контекст иногда неверен для технологии установщика скриптов, контекст, записанный в AppEnforce.log
вероятно, следует рассматривать как ненадежный для всех типов развертывания, независимо от технологии.
function Write-EnvToLog
{
$appName = 'script-install-test'
$logFolderPath = "c:\$appName-$([System.Environment]::UserName)"
if ( -not (Test-Path $logFolderPath -PathType Container) )
{
New-Item -Path $logFolderPath -ItemType Directory | Out-Null
}
if ( -not (Test-Path $logFolderPath -PathType Container ) )
{
return
}
$logFileName = "$appName`__$((Get-Date).ToString("yyyy-MM-dd__HH-mm-ss")).txt"
$fp = "$logFolderPath\$logFileName"
Get-ChildItem Env: | Out-File $fp | Out-Null
return $true
}
try
{
if ( Write-EnvToLog ) { "Complete!" }
[System.Environment]::Exit(0)
}
catch
{
[System.Environment]::Exit(1000)
}