当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何将 Invoke-MgGraphRequest 响应输出为 PowerShell 对象

作者:精品下载站 日期:2024-12-14 06:52:41 浏览:14 分类:玩电脑

如何将 Invoke-MgGraphRequest 响应输出为 PowerShell 对象


Invoke-MgGraphRequest with Microsoft Graph PowerShell 是一个灵活的 cmdlet,允许您对 Microsoft Graph API 进行几乎任何调用,并充当 Microsoft Graph PowerShell SDK 未涵盖的区域的包罗万象的角色。有关如何使用该命令的更详细的文章,请查看我的帖子。

尽管在大多数情况下它很有用,但此命令的问题之一是,默认情况下,当您向 Microsoft Graph 发出 GET 请求时,您的响应将以哈希表格式返回给您,该格式不如其他可用的有用格式。让我们看看如何以更易于管理的格式获取响应,例如 PowerShell 对象!

使用“.GetType()”检查响应类型

首先,要查看 PowerShell 中对 GET 请求的默认响应是什么样子,我们可以评估数据类型。在这里,我将连接到 Microsoft Graph PowerShell 并对 /v1.0/me 端点进行 GET 调用,这将检索当前登录的基本用户信息用户。

Connect-MgGraph

$dflt= Invoke-MgGraphRequest -uri "https://graph.microsoft.com/v1.0/me" -method GET

现在,我们的响应已保存在变量中,通过将 .GetType() 附加到该变量,我们可以检查数据类型。

$default.GetType()

我们的响应详细说明了对象类型的名称,在本例中是哈希表:

IsPublic IsSerial Name                                     BaseType                                                                                                                                                                                                                                                                                                         
-------- -------- ----                                     --------                                                                                                                                                                                                                                                                                                         
True     True     Hashtable                                System.Object   

哈希表可能很难使用 PowerShell 进行查询,特别是如果您是像我这样的非开发人员,您可能很难使用默认响应类型。例如,如果您想通过点表示法查看单个属性的值,则只能显示哈希表keysvalues

[玩转系统] 如何将 Invoke-MgGraphRequest 响应输出为 PowerShell 对象

一个更简单的解决方案(但可能效率较低)是将响应类型更改为 PowerShell 对象 的响应类型,这通常更易于使用。

使用“-OutputType”参数更改输出类型

-OutputType 参数允许您更改在 PowerShell 会话中向您返回数据的方式(类型)。该参数支持四种不同的类型,包括:

  • 哈希表
  • Http响应消息
  • 杰森
  • PS对象

使用 PowerShell 时最有用的输出类型是 PSObject 类型(或者至少对于普通管理员而言)。使用 PowerShell 时,对象通常更容易使用,数据表示更清晰并且结构良好。您还会发现将所述数据转换并导出为 CSV 文件更容易,该文件通常用于生成报告。相反,如果您尝试将哈希表导出为 CSV,键/值对将不会按应有的方式显示。

我们可以将“-OutputType PSObject”附加到上面的示例中以获得所需的结果:

$psobj = Invoke-MgGraphRequest -uri "https://graph.microsoft.com/v1.0/me" `
-method GET -OutputType PSObject

让我们通过将 .GetType() 附加到我们的变量来验证数据类型:

$psobj.GetType()

IsPublic IsSerial Name                                     BaseType                                                                                                                                                                                                                                                                                                         
-------- -------- ----                                     --------                                                                                                                                                                                                                                                                                                         
True     False    PSCustomObject                           System.Object 

请注意下面的响应与前面的示例有何不同,我们可以使用点符号来查看特定属性。

[玩转系统] 如何将 Invoke-MgGraphRequest 响应输出为 PowerShell 对象

包起来

虽然哈希表有其优点,但对于需要以他们可能已经熟悉的方式解释数据的 Microsoft 365 管理员来说,PSObject 类型将为他们提供最佳体验。将数据作为自定义对象后,您将能够以与其他 SDK cmdlet(例如 Get-MgUser)的响应相同的方式与其进行交互。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯