У меня есть тип развертывания со следующими атрибутами:
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 действительно неправильно регистрирует контекст (по крайней мере, для технологии «Установщик сценариев»).
Я создал тип развертывания со следующими атрибутами:
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. Однако, учитывая, что контекст иногда неверен для технологии установщика скриптов, контекст, записанный в 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)
}