次の属性を持つデプロイメントタイプがあります。
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 withuser context
「システムにインストール」を選択したので、これは奇妙です。
グーグル いくつかの推測を明らかにする ロギングが正しくないこと:
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 with user context
その後数秒以内に、script-install-test-X.log
がフォルダscript-install-test-SYSTEM
に書き込まれました。 SYSTEM
サフィックスは、スクリプトがSYSTEMとして実行されたことを示します。
「スクリプトインストーラー」テクノロジーの場合、スタイルのAppEnforce.log
メッセージに書き込まれるコンテキスト
コマンドラインの実行: "C:\ WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe"。\ Install-Application.ps1 with user context
コマンドラインがシステムコンテキストとして実行されている場合でも、「ユーザーコンテキスト」として誤って記述される場合があります。
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)
}