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

[玩转系统] 如何将 -ExpandProperty 开关与 PowerShell 结合使用

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

如何将 -ExpandProperty 开关与 PowerShell 结合使用


PowerShell 中的 -ExpandProperty 开关允许您提取特定属性的值,并可应用于各种不同的场景。在本教程中,我将向您解释 -ExpandProperty 开关的作用以及它与 -Property 开关的不同之处。我还将通过各种有用的示例来演示如何在不同的命令或脚本中使用 -ExpandProperty 开关。

系统要求

要运行本教程中的命令,您应该至少运行 PowerShell 版本 5.1 并使用 Windows 10 或 11 设备。我还提供了一些针对 Microsoft 365 使用 Microsoft Graph PowerShell 模块中的 cmdlet 的示例。因此,您还可以查看我的关于如何安装 Microsoft Graph PowerShell 模块的教程。

关于 -ExpandProperty 开关

-ExpandProperty 开关属于 Select-Object cmdlet。当使用此开关时,它表示要尝试扩展对象的属性。如果选择的属性在数组中,则将返回数组的值,而如果选择的属性是对象,则为每个输入的属性返回该对象的属性。

使用 -ExpandProperty 开关的示例

让我们看一些如何使用 -ExpandProperty 开关的示例。我将首先创建一个演示对象,然后我将使用一些实际示例来说明它可能有用的地方。

展开属性示例 1

我将首先创建一个名为 $Object1 的新“演示”对象,在该对象中我包含了 Neighbors 属性,它是一个数字 ArrayList。

$Object1 = [PSCustomObject]@{
    Name = "House"
    HouseNumber = "133"
    Neighbours = [System.Collections.ArrayList]@(
        132, 134
    )
}

我们只需输入对象名称即可在控制台中查看该对象,看看邻居属性如何显示在一行上。

[玩转系统] 如何将 -ExpandProperty 开关与 PowerShell 结合使用

本例中的 -ExpandProperty 开关可以帮助提取 Neighbors 数组的值。

$object1 | Select -ExpandProperty Neighbours

现在我们已经扩展了 Neighbors 属性,我们将返回数组中的值。现在我们有了这些值,我们可以在循环中独立执行独立的操作或每个项目或每个项目的操作。

[玩转系统] 如何将 -ExpandProperty 开关与 PowerShell 结合使用

让我们更进一步地了解这个示例,下面我将 Neighbours 属性更改为自定义对象,并在 Members 属性中嵌入了一个名称数组列表。

$object2 = [PSCustomObject]@{
    Name = "House"
    HouseNumber = "133"
    Neighbours = [PSCustomObject]@{
        HouseNumber = "122"
        Members = [System.Collections.ArrayList]@("Daniel", "Jas")
        Car = "Audi"
    }
}

如果我们然后在控制台中输入 $Object2 ,我们会得到以下输出,我们很清楚 Neighbors 对象中存在无法立即读取的嵌套信息。

[玩转系统] 如何将 -ExpandProperty 开关与 PowerShell 结合使用

可以使用-ExpandProperty 开关提取此信息。

$object2 | Select -ExpandProperty Neighbours

您现在可以看到我们已经扩展了 Neighbors 对象,我们返回了该对象的属性。

[玩转系统] 如何将 -ExpandProperty 开关与 PowerShell 结合使用

如果您只想选择成员列表的值,最简单的方法是将命令括在括号中并选择 Members 属性,就像我在下面的示例中所做的那样。

($object2 | Select -ExpandProperty Neighbours).Members

首先执行括号内包含的内容,然后我们可以选择结果的成员属性来输出到我们的会话。

[玩转系统] 如何将 -ExpandProperty 开关与 PowerShell 结合使用

展开属性示例 2

在此示例中,我们将使用 Get-ComputerInfo cmdlet 查找有关计算机操作系统的信息。

首先,我们将使用 Get-ComputerInfo cmdlet 并选择仅包含可用操作系统套件的 OsSuite 属性。

Get-ComputerInfo | Select  OsSuites

我们可以看到命令的结果是一个通用的 NoteProperty,其中包含有关操作系统套件的信息。

[玩转系统] 如何将 -ExpandProperty 开关与 PowerShell 结合使用

与我们之前的示例之一类似,我们可以扩展此属性以仅检索 OsSuites 属性的值。

Get-ComputerInfo | Select -ExpandProperty OsSuites

从下面的输出中我们可以看到我们现在只检索了属性的单个值。

[玩转系统] 如何将 -ExpandProperty 开关与 PowerShell 结合使用

展开属性示例 3

在最后一个示例中,我使用 Microsoft Graph PowerShell 模块中的命令来管理 Microsoft 365。我的完整教程标题为:如何将 Get-MgUser 与 Microsoft Graph PowerShell 结合使用解释了有关 Get-MgUser cmdlet 的更多信息。

下面我尝试查找 Microsoft 365 租户中特定用户的 SignInActivity 信息。

get-mguser -userid d3657241-22d5-4606-90b7-ce4d0a52f074 | `
Select SignInActivity

但是,当我选择 SignInActivity 属性时,我得到了对象名称:Microsoft.Graph.PowerShell.Models.MicrosoftGraphSignInActivity。

[玩转系统] 如何将 -ExpandProperty 开关与 PowerShell 结合使用

为了找到我们需要的信息,我们需要使用 -ExpandProperty 开关来返回该对象内的信息。

get-mguser -userid d3657241-22d5-4606-90b7-ce4d0a52f074 `
-Property signinactivity | Select-Object -ExpandProperty signinactivity

运行上述命令后,您可以从下面看到我们现在可以找到我们要查找的信息。

[玩转系统] 如何将 -ExpandProperty 开关与 PowerShell 结合使用

结论

在本教程中,我解释了 PowerShell 中属于 Select-Object cmdlet 的 -ExpandProperty 开关的用途。还演示了一些现实世界和虚构的示例,以帮助您了解如何在实践中使用它。

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

取消回复欢迎 发表评论:

关灯