Microsoft Graph API、PowerShell 代码,用于获取用户的合规设备列表

问题描述 投票:0回答:1

我正在尝试编写 PowerShell 代码来获取给定用户的兼容设备列表。到目前为止,我有以下代码可以获取给定用户的计算机列表:

Connect-AzureAD
Connect-MgGraph 
$user = 'FName LName'
$user = Get-MgUser -Filter "Displayname eq '$user'"
$PrincipalName = $user.UserPrincipalName
$Id = $user.Id
Write-Host User Principal Name: $PrincipalName
Write-Host User Id: $Id
$devices = Get-MgUserOwnedDevice -UserId $Id
foreach ($device in $devices) {
        Write-Host "Device Id: $($device.Id)"
$test = get-MgDevice -DeviceId $device.Id 
Write-Host $test.DisplayName
}

但我还想在 get-MgDevice cmdlet 中包含一个过滤器,以仅获取兼容的设备。

我尝试更换

$test = get-MgDevice -DeviceId $device.Id

这个:

$test = Get-MgDevice -Filter 'isCompliant eq true' -ConsistencyLevel eventual -CountVariable c  -DeviceId $deviceId

但是它不起作用并且出错。 有人可以建议我如何实现我的目标吗?非常欢迎和赞赏任何帮助。 谢谢

azure azure-active-directory azure-powershell microsoft-entra-id
1个回答
0
投票

我有一个名为

Sri
的用户,有 2 台设备,其中 1 台是投诉,如下所示:

enter image description here

当我运行您的代码来列出给定用户的设备时,我得到了响应,如下所示:

Connect-MgGraph -NoWelcome
$user = 'Sri'
$user = Get-MgUser -Filter "Displayname eq '$user'"
$PrincipalName = $user.UserPrincipalName
$Id = $user.Id
Write-Host User Principal Name: $PrincipalName
Write-Host User Id: $Id
$devices = Get-MgUserOwnedDevice -UserId $Id
foreach ($device in $devices) {
        Write-Host "Device Id: $($device.Id)"
$test = get-MgDevice -DeviceId $device.Id 
Write-Host $test.DisplayName
}

回复:

enter image description here

要获取给定用户仅兼容设备的列表,您可以使用以下修改过的 PowerShell 脚本:

Connect-MgGraph -NoWelcome

$userName = 'Sri'
$user = Get-MgUser -Filter "Displayname eq '$userName'"
$userId = $user.Id

Write-Host "User Principal Name: $($user.UserPrincipalName)"
Write-Host "User Id: $($userId)"

$devices = Get-MgUserOwnedDevice -UserId $userId

$compliantDevices = 0

foreach ($device in $devices) {
    $deviceId = $device.Id
    $test = Get-MgDevice -Filter "id eq '$deviceId' and isCompliant eq true"
    
    if ($test) {
        $compliantDevices++
        Write-Host "Device Id: $($test.Id)"
        Write-Host "Device Name: $($test.DisplayName)"
    }
}

Write-Host "Number of Compliant Devices: $($compliantDevices)"

回复:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.