体验管理(以前称为 DEEM)在您的Windows设备上工作,让您能够深入了解网络运行状况。适用于 Windows 的 Experience Management Agent 嵌入在 Windows 应用程序的Workspace ONE Intelligent Hub中,因此,当您将此应用部署并安装到受管Windows设备时,您可以在Workspace ONE Intelligence仪表板和报告中使用 Experience Management 进行Windows遥测。
如果您的设备未将遥测数据发送到 Workspace ONE Intelligence 以用于体验管理,您可以通过检查 Workspace ONE Intelligent Hub 的状态并查看日志文件来对系统进行故障排除。
您无需在Windows设备上安装 Experience Management Agent。适用于 Windows 的 Experience Management Agent 与适用于 Windows 的 Workspace ONE Intelligent Hub一起安装。在 C:\Program Files\VMware\Endpoint Telemetry Service 中找到代理。
要对向 Workspace ONE Intelligence 发送数据的问题进行故障排除,一种方法是确保 Workspace ONE Intelligent Hub 或适用于 Windows 的体验管理代理正在 Windows 设备上运行。体验管理代理包括两项服务。
服务名称 | 服务显示名称 |
---|---|
VMWOSQEXT | VMware 数字体验遥测 |
vmwetlm | VMware Experience Management Service |
以管理员身份启动命令提示符应用,并运行 sc query vmwosqext
或 sc query vmwetlm
。这些命令将 DEEM 遥测代理服务的状态显示为 VMWOSQEXT 或 vmwetlm。
体验管理会在 HKEY_LOCAL_MACHINE?SYSTEM?CurrentControlSet?Services?VMWOSQEXT 下以及 Windows 设备上的 HKEY_LOCAL_MACHINE“SYSTEM”CurrentControlSet?Services?vmwetlm 下创建注册表项。这些注册表适用于 Workspace ONE Intelligent Hub 和适用于 Windows 的体验管理代理。
tlmtool
)为了更轻松地进行故障排除,体验管理代理 v22.6.0 及更高版本附带了一个名为 tlmtool
的新实用程序工具。使用实用程序工具设置日志级别、收集日志文件和打包日志文件。
实用程序工具安装在设备上与适用于 Windows 的体验管理相同的目录中,位于 C:\Program Files\VMware\Endpoint Telemetry Service\Tools。可以使用以下位置的注册表项检索安装路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vmwetlm\ImagePath。
以管理员身份运行 tlmtool
,并将执行策略与 PowerShell 脚本配合使用。PowerShell 命令为 Set-ExecutionPolicy
。
tlmtool <options> [arguments]
。tlmtool -setLogLevel Trace
。tlmtool
中支持的命令选项,请在命令提示符中输入 tlmtool -help
。选项 | 使用量 | 说明 |
---|---|---|
collectLog | -collectLog |
默认情况下,收集并打包日志文件,并将其存储在 C:\Windows\Temp\Diagnostic 中。 |
getDEEMManagementMode | -getDEEMManagementMode |
检索哪个系统管理体验管理系统(Workspace ONE UEM 或 Horizon)。 |
getDEEMDisabled | -getDEEMDisabled |
获取由实用程序工具设置的收集和发送体验管理数据的状态。 - false :体验管理正在收集和发送数据。- true :体验管理不会收集和发送数据。 |
help | -help |
显示工具的帮助信息。 |
resetAllLogSettings | -resetAllLogSettings |
将所有日志设置重置为默认值,包括日志级别和配置。 |
resetLogConfiguration | -resetLogConfiguration maxLogSize |
将日志文件的最大大小重置为默认值 1MB。 |
-resetLogConfiguration maxTraceLogSize |
将跟踪日志文件的最大大小重置为默认值 10MB。 | |
-resetLogConfiguration maxLogFiles |
将保留的最大历史日志文件数重置为默认值 10。 | |
resetLogLevel | -resetLogLevel |
将日志级别重置为默认设置。 |
setDEEMDisabled | -setDEEMDisabled false |
将体验管理设置为继续收集和发送数据。 |
-setDEEMDisabled true |
阻止体验管理收集和发送数据。 管理策略可能会使此命令无效。请参阅使用组策略对象为 Windows配置体验管理一节。 |
|
setDEEMManagementMode | -setDEEMManagementMode <uem> |
设置 Workspace ONE UEM 以管理体验管理服务。 |
-setDEEMManagementMode <horizon> |
设置 Horizon 以管理体验管理服务。 | |
setLogConfiguration | -setLogConfiguration maxLogSize <1..50> |
设置日志文件的最大大小(以 MB 为单位),范围为 1-50。 |
-setLogConfiguration maxTraceLogSize <1..50> |
设置跟踪日志文件的最大大小(以 MB 为单位),范围为 1-50。 | |
-setLogConfiguration maxLogFiles <1..30> |
设置保留的最大历史日志文件数,范围为 1-30。 | |
setLogLevel | -setLogLevel <Error\Info\Debug\Trace> |
将日志级别设置为 <Error\Info\Debug\Trace> 。 |
tlmtool
命令 tlmtool -setLogLevel Trace
激活体验管理的日志记录,而无需重新启动服务。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VMWOSQEXT\ImagePath = “"C:\Program Files (x86)\Airwatch\AgentUI\Telemetry\vmwosqext.exe" --service --osq_named_pipe=vmwosqext.em --logger_min_status=0 --vmw_windows_log_verbose”
HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware Endpoint Telemetry\Service\Config\Log\LogLevel="Trace"
要在用户体验评分中提供有关 Windows 登录/注销体验的其他体验管理衡量指标,请在适用的 Windows 设备上激活列出的高级审核策略。
您可以使用列出的过程在 Windows 计算机上激活这些策略。
如果要使用 CMD 文件(批处理文件)激活高级审核策略,列出的代码将更新适用的 GPO。
@echo off
echo "Machine Name,Policy Target,Subcategory,Subcategory GUID,Inclusion Setting,Exclusion Setting,Setting Value" >audit_policy.csv
echo ",System,Audit Logoff,{0cce9216-69ae-11d9-bed3-505054503030},Success and Failure,,3" >>audit_policy.csv
echo ",System,Audit Logon,{0cce9215-69ae-11d9-bed3-505054503030},Success and Failure,,3" >>audit_policy.csv
echo ",System,Audit Other Logon/Logoff Events,{0cce921c-69ae-11d9-bed3-505054503030},Success and Failure,,3" >>audit_policy.csv
auditpol.exe /restore /file:audit_policy.csv
del /f audit_policy.csv
激活审核策略的另一种方法是使用基准。基准是组合在一起的精选设置,可简化 Windows 配置。列出的过程概述了激活高级审核策略的常规步骤。有关基准的详细信息,请访问使用基准。
如果您不希望使用 GPO、CMD 文件或基准,还可以使用 PowerShell 命令为 Windows 登录/注销体验数据激活审核策略。
$host.UI.RawUI.BufferSize = New-Object Management.Automation.Host.Size (500, $host.UI.RawUI.BufferSize.Height)
$ProgressPreference = 'SilentlyContinue'
$csvContent = @"
"Machine Name,Policy Target,Subcategory,Subcategory GUID,Inclusion Setting,Exclusion Setting,Setting Value"
",System,Audit Logoff,{0cce9216-69ae-11d9-bed3-505054503030},Success and Failure,,3"
",System,Audit Logon,{0cce9215-69ae-11d9-bed3-505054503030},Success and Failure,,3"
",System,Audit Other Logon/Logoff Events,{0cce921c-69ae-11d9-bed3-505054503030},Success and Failure,,3"
"@`
$csvContent | Out-File -FilePath "audit_policy.csv" -Encoding ASCII
& auditpol.exe /restore /file:audit_policy.csv
Remove-Item -Path "audit_policy.csv" -Force
使用组策略对象配置体验管理代理。
例如,当您不希望从用户设备收集遥测时,可以使用组策略对象配置体验管理代理。要控制本地 Windows 计算机上体验管理遥测的收集,请使用适用于 Windows ADMX 的体验管理模板文件 vmw_etlm.admx
中包含的自定义组策略对象 (GPO)。
从 My Workspace ONE 查找并下载 ZIP 格式的模板文件。您必须将文件复制到 Active Directory 服务器,并使用组策略管理编辑器添加管理模板。
GPO 设置 | 说明 |
---|---|
允许本地禁用 | 确定是否允许在用户设备上使用 tlmtool 实用程序工具进行本地停用。设置为启用时,允许使用 tlmtool 实用程序工具进行本地停用。设置为禁用时,实用程序工具的停用不起作用。 如果未配置此策略,则允许本地停用。 |
禁用 DEEM | 确定是否可以通过管理策略 (GPO) 停用体验管理。 设置为启用时,体验管理会停止从用户的设备收集和发送遥测数据。 如果将该策略设置设定为禁用或者如果未配置该策略设置,则用户仍然可以在本地停用体验管理,具体取决于允许本地禁用策略设置。 |
管理模式 | 确定管理体验管理集成的解决方案,Workspace ONE UEM 或 Horizon。 默认管理器为 Workspace ONE UEM。使用 GPO 覆盖默认值。 |
代理服务器配置 | 这些策略设置配置 Horizon 桌面在将数据发送到 Intelligence 服务时使用的代理服务器配置。 选择自动 代理设置时,系统会自动发现具有 WPAD(Web 代理自动发现协议)和 DHCP(动态主机配置协议)等协议的代理配置。 选择脚本代理设置时,系统将使用脚本地址 检索代理配置脚本。脚本地址可以是 URL 或标准 URN 位置。例如,它可以是本地或远程磁盘上的文件, \\server\share\script.pac 。选择静态代理设置时,静态代理 URL 指定要使用的代理。URL 可以包含端口。 如果停用或未配置此策略,则系统不使用代理。 |
使用管理模板和 GPO 或实用程序工具 (tlmtool
) 控制体验管理数据的收集。
在本地 Windows 计算机上控制体验管理的功能在多种场景中非常有用。
要了解 GPO 和实用程序工具在停用体验管理时如何协同工作,请从 GPO 设置禁用 DEEM 开始并浏览流程图以查看哪些设置激活了该功能,以及哪些设置停用了该功能。
安装包含自定义 GPO 的管理模板并对其进行配置。
使用命令行控制体验管理收集和发送数据。
-setDEEMDisabled <value>
通过实用程序工具控制体验管理数据的收集和发送。
-setDEEMDisabled false
:体验管理将继续收集和发送数据。-setDEEMDisabled true
:体验管理停止收集和发送数据。-getDEEMDisabled
查看体验管理状态。
false
:体验管理正在收集和发送数据。true
:体验管理不会收集和发送数据。使用脚本远程控制(激活或停用)Windows 设备上的体验管理,并使用传感器远程检索 Windows 设备上的体验管理的当前状态。
您可能会决定需要在各种场景中关闭体验管理。
满足列出的要求,使用脚本和传感器控制体验管理。
使用此脚本激活或停用体验管理。
# Set the $deemDisabled value. $True will Disable DEEM, $False will Enable DEEM
$deemDisabled = $true
# Define the log file path
$logFilePath = "C:\ProgramData\AirWatch\UnifiedAgent\Logs\DEEMstatus.log"
# Function to check and truncate the log file if it exceeds 1MB
function CheckAndTruncateLogFile {
if (Test-Path $logFilePath) {
$file = Get-Item $logFilePath
$fileSizeMB = $file.Length / 1MB
if ($fileSizeMB -gt 1) {
Clear-Content $logFilePath
}
}
}
# Function to log and write a message
function LogAndWriteMessage {
# Arguments
$message = $args[0]
$addSeparator = $false
if ($args.Length -gt 1) {
$addSeparator = $args[1]
}
CheckAndTruncateLogFile
$separator = if ($addSeparator) { "`r`n" + ("*" * 50) + "`r`n" } else { "" }
$finalMessage = "$message$separator"
$finalMessage | Out-File -FilePath $logFilePath -Append
Write-Host $finalMessage
}
# Full path to tlmtool.exe
$tlmToolPath = "C:\Program Files\VMware\Endpoint Telemetry Service\Tools\tlmtool.exe"
# Check if tlmtool.exe exists
if (-not (Test-Path $tlmToolPath)) {
LogAndWriteMessage "The file $tlmToolPath does not exist."
return
}
# Log the user running the script
$currentUsername = whoami
LogAndWriteMessage "Script is being run by user: $currentUsername"
# Run tlmtool.exe with the specified parameters and log the output
& $tlmToolPath -setDEEMDisabled $deemDisabled | Out-File -FilePath $logFilePath -Append
# Determine the expected status and startup type based on $deemDisabled
$expectedStatus = if ($deemDisabled -eq $true) { 'Stopped' } else { 'Running' }
$startupType = if ($deemDisabled -eq $true) { 'Disabled' } else { 'Automatic' }
# Initialize counter for service status check loop
$retryCount = 0
$maxRetries = 6 # Up to 60 seconds wait (6 retries * 10 seconds each)
# Loop to update the service and check the status
do {
# Update the service status and startup type
if ($deemDisabled -eq $true) {
Stop-Service -Name "VMWOSQEXT" -ErrorAction SilentlyContinue
Set-Service -Name "VMWOSQEXT" -StartupType Disabled
} elseif ($deemDisabled -eq $false) {
Start-Service -Name "VMWOSQEXT" -ErrorAction SilentlyContinue
Set-Service -Name "VMWOSQEXT" -StartupType Automatic
}
Start-Sleep -Seconds 10
$currentStatus = (Get-Service -Name "VMWOSQEXT").Status
LogAndWriteMessage "Checking VMWOSQEXT service status: $currentStatus. Expected: $expectedStatus. Attempt: $($retryCount + 1)"
$retryCount++
} while ($currentStatus -ne $expectedStatus -and $retryCount -lt $maxRetries)
# Verify final status of the service and the registry key value
$deemRegKeyPath = "HKLM:\SOFTWARE\VMware, Inc.\VMware Endpoint Telemetry\DEEM"
$deemRegValName = "Disabled"
$deemRegVal = (Get-ItemProperty -Path $deemRegKeyPath -Name $deemRegValName -ErrorAction SilentlyContinue).$deemRegValName
# Convert registry value to a boolean for comparison
$registryValueAsBool = [System.Boolean]::Parse($deemRegVal)
if ($currentStatus -eq $expectedStatus) {
if (($registryValueAsBool -and $deemDisabled -eq $true) -or (-not $registryValueAsBool -and $deemDisabled -eq $false)) {
$deemState = if ($deemDisabled -eq $true) { "Disabled" } else { "Enabled" }
LogAndWriteMessage "Service VMWOSQEXT is in the expected state: $expectedStatus and DEEM is $deemState." $true
} else {
LogAndWriteMessage "Warning: Service VMWOSQEXT is in the expected state, but DEEM registry key value does not match the expected configuration." $true
}
} else {
LogAndWriteMessage "Warning: Service VMWOSQEXT did not reach the expected state ($expectedStatus) after $($retryCount * 10) seconds." $true
}
使用此传感器可返回设备上的体验管理状态。
# Define the service and registry path
$serviceName = "VMWOSQEXT"
# Get the service status
$service = Get-Service -Name $serviceName -ErrorAction SilentlyContinue
#DEEM registry path
$registryPath = "HKLM:\SOFTWARE\VMware, Inc.\VMware Endpoint Telemetry\DEEM"
# Get the DEEM status value
$registryValue = Get-ItemProperty -Path $registryPath -Name Disabled -ErrorAction SilentlyContinue
# Check if the service and registry key exist
if ($service -eq $null) {
Write-Host "Service $serviceName not found."
#exit
}
if (-not (Test-Path $registryPath)) {
Write-Host "Registry path $registryPath not found."
#exit
}
# Check the DEEM status conditions and return the appropriate message
if ($service.Status -eq 'Running' -and $service.StartType -eq 'Automatic' -and $registryValue.Disabled -eq $false) {
"DEEM is enabled"
} elseif ($service.Status -eq 'Stopped' -and $service.StartType -eq 'Disabled' -and $registryValue.Disabled -eq $true) {
"DEEM is disabled"
} else {
"DEEM status is in an unknown state."
}
使用此传感器返回设备上的体验管理版本。
# Define the registry path
$registryPath = "HKLM:\SOFTWARE\VMware, Inc.\VMware Endpoint Telemetry\Service\Version"
# Check if the registry key exists
if ($registryPath) {
# Retrieve the value data if the key exists
$versionData = Get-ItemPropertyValue -Path $registryPath -Name "VMware DEEM for Intelligent Hub" -ErrorAction SilentlyContinue
if ($versionData) {
# Output the value data
Return $versionData
} else {
# Output if the specific value does not exist under the key
Return "Value 'VMware DEEM for Intelligent Hub' does not exist in the key."
}
} else {
# Output if the registry key does not exist
Return "DEEM version key does not exist"
}