通过 PowerShell 中的 SCCM 查询获取设备的主要用户
Get primary user of device through SCCM query in PowerShell
我们正在扫描活动目录以查找所有计算机对象。然后对于每台机器,我们试图找到最常使用该机器的用户,即主要用户。
为了查找此数据,我们找到了 2 个针对 SCCM 的有效查询:
$Query = "
SELECT
SMS_R_User.FullUserName, SMS_R_User.UniqueUserName, SMS_R_System.Name
FROM
SMS_R_System
INNER JOIN
SMS_G_System_SYSTEM_CONSOLE_USAGE
ON
SMS_G_System_SYSTEM_CONSOLE_USAGE.ResourceId = SMS_R_System.ResourceId
INNER JOIN
SMS_R_User
ON
SMS_G_System_SYSTEM_CONSOLE_USAGE.TopConsoleUser = SMS_R_User.UniqueUserName
"
$Query = "
SELECT
SMS_R_System.name, SMS_R_User.UniqueUserName
FROM
SMS_R_System
INNER JOIN
SMS_UserMachineRelationship
ON
SMS_UserMachineRelationship.ResourceId = SMS_R_System.ResourceId
JOIN
SMS_R_User
ON
SMS_UserMachineRelationship.UniqueUserName = SMS_R_User.UniqueUserName
WHERE
SMS_UserMachineRelationship.Types = 1
"
我们执行这些:
$WmiParams = @{
Namespace = "root\SMS\site_EU1"
ComputerName = $SCCMServer
Query = $Query
}
$Result = Get-WmiObject @WmiParams
我们不是很多 SCCM 专家,但两个查询给出不同的结果和重复的计算机对象 $Result.SMS_R_System.Name | Group-Object | where Count -ge 2
。
使用 SamAccountName
和 FullUserName
将一个机器名称连接到一个主要用户的正确查询是什么?
感谢您的帮助。
SMS_UserMachineRelationship
应包含用户的主要设备。 1 个设备可能是多个用户的 Primary 设备,也可能 1 个用户可以拥有多于 1 个 Primary 设备。它取决于 Client Settings
中配置的条件来识别主设备。默认情况下,如果某些用户在一个月内登录设备 48 hours
,则该设备将被视为该用户的主要设备。这个标准可以改变。您可以在 https://docs.microsoft.com/en-us/sccm/apps/deploy-use/link-users-and-devices-with-user-device-affinity
阅读更多关于 User Device Affinity
的信息
另一种选择是使用 PowerShell 模块“dbatools”...
Invoke-DbaQuery -SqlInstance "myserver.contoso.local" -Database "CM_P01" -Query "select UniqueUserName,MachineResource Name from v_UserMachineRelationship"
我们正在扫描活动目录以查找所有计算机对象。然后对于每台机器,我们试图找到最常使用该机器的用户,即主要用户。
为了查找此数据,我们找到了 2 个针对 SCCM 的有效查询:
$Query = "
SELECT
SMS_R_User.FullUserName, SMS_R_User.UniqueUserName, SMS_R_System.Name
FROM
SMS_R_System
INNER JOIN
SMS_G_System_SYSTEM_CONSOLE_USAGE
ON
SMS_G_System_SYSTEM_CONSOLE_USAGE.ResourceId = SMS_R_System.ResourceId
INNER JOIN
SMS_R_User
ON
SMS_G_System_SYSTEM_CONSOLE_USAGE.TopConsoleUser = SMS_R_User.UniqueUserName
"
$Query = "
SELECT
SMS_R_System.name, SMS_R_User.UniqueUserName
FROM
SMS_R_System
INNER JOIN
SMS_UserMachineRelationship
ON
SMS_UserMachineRelationship.ResourceId = SMS_R_System.ResourceId
JOIN
SMS_R_User
ON
SMS_UserMachineRelationship.UniqueUserName = SMS_R_User.UniqueUserName
WHERE
SMS_UserMachineRelationship.Types = 1
"
我们执行这些:
$WmiParams = @{
Namespace = "root\SMS\site_EU1"
ComputerName = $SCCMServer
Query = $Query
}
$Result = Get-WmiObject @WmiParams
我们不是很多 SCCM 专家,但两个查询给出不同的结果和重复的计算机对象 $Result.SMS_R_System.Name | Group-Object | where Count -ge 2
。
使用 SamAccountName
和 FullUserName
将一个机器名称连接到一个主要用户的正确查询是什么?
感谢您的帮助。
SMS_UserMachineRelationship
应包含用户的主要设备。 1 个设备可能是多个用户的 Primary 设备,也可能 1 个用户可以拥有多于 1 个 Primary 设备。它取决于 Client Settings
中配置的条件来识别主设备。默认情况下,如果某些用户在一个月内登录设备 48 hours
,则该设备将被视为该用户的主要设备。这个标准可以改变。您可以在 https://docs.microsoft.com/en-us/sccm/apps/deploy-use/link-users-and-devices-with-user-device-affinity
User Device Affinity
的信息
另一种选择是使用 PowerShell 模块“dbatools”...
Invoke-DbaQuery -SqlInstance "myserver.contoso.local" -Database "CM_P01" -Query "select UniqueUserName,MachineResource Name from v_UserMachineRelationship"