从System.Array的一行中检索多个值

时间:2020-05-18 15:25:16

标签: powershell microsoft-graph-api

我有一些api调用,这些调用使我从Microsoft 365资产中获取信息,尤其是我满意的用户和许可证信息,然后将这些数据推送到MySQL数据库。

有些用户拥有多个产品许可证,比如说“ Office 365”和“ Project Professional”。

运行脚本时, ForEach 会捕获 System.Array 中的第一个许可证,但是我无法确定如何为用户捕获后续许可证。

Api的

$apiUrl = 'https://graph.microsoft.com/v1.0/subscribedSkus/'
$skus = Invoke-RestMethod -Headers @{Authorization = "Bearer $($Tokenresponse.access_token)"} -Uri $apiUrl -Method Get
$skus = ($skus | select-object Value).Value
#####
$apiUrl = 'https://graph.microsoft.com/v1.0/users?$select=displayName,userPrincipalName,assignedLicenses'
$users = Invoke-RestMethod -Headers @{Authorization = "Bearer $($Tokenresponse.access_token)"} -Uri $apiUrl -Method GET
$users = ($users | select-object Value).Value

当前脚本:

ForEach($item in $users){
        $itemSkuId = $item.assignedLicenses.skuId
        ForEach($plan in $skus){
            If($plan.skuId -in $itemSkuId){
            $itemSkuId = $plan.skuPartNumber
            $item.assignedLicenses = $itemSkuId

                     }
                 }  
             }

 ForEach($item in $users){
                    if($item.assignedLicenses -notin $skus.skuPartNumber){
                    $item.assignedLicenses = ("No License Assigned")

                    }
                }

Api调用的示例输出显示$ users: 一个人只分配了1个许可证,另一个人却分配了2个许可证(差异产品)。

displayName                              userPrincipalName                                        assignedLicenses                                                                                                    
-----------                              -----------------                                        ----------------                                                                                                    
Joe Bloggs                            Joe.Bloggs@test.com              {@{disabledPlans=System.Object[]; skuId=cdd28e44-67e3-425e-be4c-737fab2899d3}}                                      
Joe Bloggs2                           Joe.Bloggs@test.com                 {@{disabledPlans=System.Object[]; skuId=29a2f828-8f39-4837-b8ff-c957e86abe3c}, @{disabledPlans=System.Object[]; s...              

本质上,分配给用户的每个许可证都会赋予另一个skuId值。

0 个答案:

没有答案
相关问题