按部门属性比较 AD 用户及其在 SCCM 中的 ResourceName 的报告

Report that compares AD users by department attribute and their ResourceName in SCCM

我正在尝试为我和我的团队编写一份报告。该报告查看 Active Directory 并根据部门过滤用户。我让它工作得很好。然后我希望在 SCCM 中交叉引用这些用户以找到他们的资源名称设备。在他们找到资源名称设备后,我希望输出他们的名称和主要设备并以报告方式通过电子邮件发送给我。注意 在下面的脚本中,$UserList 是我已经根据部门 FN(财务)提取的 AD 用户列表。如何告诉 SCCM 带走这些用户并找到他们的主要设备?那如何输出两组数据呢?

"$UserList = '\L007478\c$\temp\SCCM people.txt' ForEach ($User in $UserList) { $output = Get-CMUserDeviceAffinity -UserName $User

if ($output -eq $null) { $output -eq $null 写入主机“未找到数据”} else { 写入主机 $output }

}"

当您 运行 Get-CMUserDeviceAffinity 时,它将为您提供此数据。我真正需要的是 ResourceName

SmsProviderObjectPath:SMS_UserMachineRelationship.RelationshipResourceID=25172891 创建时间:6/3/2020 10:11:33 上午 IsActive:真 关系资源 ID:25172891 资源客户端类型:1 资源编号:16780388 资源名称:L007478 资料来源:{4} 类型:{} 唯一用户名:redgold\jknotts

您可以执行以下操作:

$UserList = Get-Content '\L007478\c$\temp\SCCM people.txt'
$output = ForEach ($User in $UserList) {
    $affinity = Get-CMUserDeviceAffinity -UserName $User
    $obj = "" | Select User,ResourceName # Create custom object with properties User and ResourceName
    $obj.User = $User # Set User property to $User
    if (!$affinity) { 
        $obj.ResourceName = 'No data was found' # Set ResourceName property
    } 
    else { 
        $obj.ResourceName = $affinity.ResourceName # Set ResourceName property
    }
    $obj # Output the custom object and store in collection $output
}

# output results
$output
# Output results to CSV
$output | Export-Csv output.csv -NoType

由于 Get-CMUserDeviceAffinity 结果包含您要检索的名为 ResourceName 的 属性,您可以简单地使用 . 成员访问运算符。语法为 $variable.Property(command).Property.

创建自定义对象允许自定义属性。