我正在尝试编写 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
但是它不起作用并且出错。 有人可以建议我如何实现我的目标吗?非常欢迎和赞赏任何帮助。 谢谢
我有一个名为
Sri
的用户,有 2 台设备,其中 1 台是投诉,如下所示:
当我运行您的代码来列出给定用户的设备时,我得到了响应,如下所示:
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
}
回复:
要获取给定用户仅兼容设备的列表,您可以使用以下修改过的 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)"
回复: