通过PowerShell中的SCCM查询获取设备的主要用户

时间:2019-02-13 09:29:54

标签: powershell sccm wql

我们正在扫描活动目录以查找所有计算机对象。然后,对于每台计算机,我们试图找到使用该计算机最多的用户,即主要用户。

要找到此数据,我们发现了两个针对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

使用SamAccountNameFullUserName将一台计算机名称连接到一个主要用户的正确查询是什么?

谢谢您的帮助。

2 个答案:

答案 0 :(得分:1)

SMS_UserMachineRelationship应该包含用户的主设备。 1个设备可能是许多用户的主要设备,并且1个用户可能拥有1个以上的主要设备。取决于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的更多信息

答案 1 :(得分:0)

另一种选择是使用PowerShell模块“ dbatools” ...

Invoke-DbaQuery -SqlInstance "myserver.contoso.local" -Database "CM_P01" -Query "select UniqueUserName,MachineResource Name from v_UserMachineRelationship"