我的部署类型具有以下属性:
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用户上下文
这很奇怪,因为我选择了“为系统安装”。
谷歌搜索揭示了一些猜测记录不正确:
不管怎样,我注意到 appenforce.log 似乎总是说它在用户上下文中,即使事实并非如此。
我找到了一些其他类似的评论,但没有找到任何明确的参考。这让我有以下疑问:
即使以系统身份执行,AppEnforce.log 是否真的将上下文记录为用户?
答案1
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 安装程序技术怎么样?
我没有针对 MSI 安装程序技术进行测试。但是,考虑到脚本安装程序技术的上下文有时会出错,因此对于所有部署类型(无论使用哪种技术),写入的上下文AppEnforce.log
可能都应被视为不可靠的。
安装-应用程序.ps1
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)
}