我想了解如何在不使用 "Id : " 的额外行的情况下从 Get-GPO 捕获 ID

I would like to learn how capture the ID from Get-GPO without the extra lines of "Id : "

我找不到正确的方法。我想了解如何在没有 "Id : " 的额外行的情况下从 Get-GPO 捕获 ID。当我试图删除第一部分时;我了解到我正在使用 "BaseType of System.Object" 而不是数组。所以我还没有找到任何简单的方法来删除它或在没有额外文本的情况下删除它自己的 ID 上的 select。 谢谢你的帮助。 我知道 "Default Domain Policy" ID 总是相同的 ID) 这是我尝试 运行 的示例和我想要获得的示例。

$test = Get-GPO "Default Domain Policy" | select id
$test

---结果---

Id                                                                                                                                                                                                       
--                                                                                                                                                                                                       
31b2f340-016d-11d2-945f-00c04fb984f9

---我正在寻找的结果----

31b2f340-016d-11d2-945f-00c04fb984f9 

这很简单...在您的 Select 命令中使用参数 -ExpandProperty(我总是简称为 -Expand

PS C:\windows\system32> $test = Get-GPO "Default Domain Policy" | select -Expand id | Select -Expand GUID
PS C:\windows\system32> $test

31b2f340-016d-11d2-945f-00c04fb984f9 

简单的答案是:

$test = Get-GPO "test1" | select -ExpandProperty id
$Test = $Test.Guid
$test

编辑:哇,我把它挂了 2 年?我的坏...要扩展删除空白条目,GPO 对象有几个属性。其中一个属性是 Id,其类型为 [System.Guid],并且具有 Guid 的 属性,这是这里的最终目标,以获取邮政总局。 Guid 属性 是 [System.String] 类型,它肯定有一个 .Trim() 方法。现在,如果您有多个项目,但并非所有项目都具有 Id 属性,或者并非所有 Id 属性都具有 Guid 属性,然后遍历它们,当你输出数组时,你最终会得到空白。为避免我们首先遍历 Id 属性,然后针对每个属性遍历 Guid 属性,最后删除空字符串、空值和无关新行形式的额外空格在一个多行字符串中(我们真的不应该得到最后一个,因为这些是 GUID,但我只是在这里说得很透彻)。

这次我将使用 shorthand % 而不是 Select -Expand% 实际上是 ForEach-Object 的别名,基本上我在这里做的是为每个 GPO 告诉它,给我 ID 属性 的值,然后为每个 GPO给我 Guid 值。

$test = Get-GPO "Default Domain Policy" | % id | % GUID | ?{!([string]::IsNullOrWhitespace($_))} | %{$_.Trim()}

当我使用 Get-GPO -all 测试它并输出结果时,我得到了一堵超过 1500 个 GUID 的墙。没有空格,没有空行,只有很多很多 GUID。

我也遇到了这个问题,也发现了同样的行为。
如果您使用 -expandproperty ID(或 (Get-GPO "Default Domain Policy).Id),您将获得 GUID 作为您的 header 而不再是 ID。疯狂 PS...

所以对我来说这看起来是嵌套的。 如果你想要它像我一样“干净”,因为你也不喜欢上面建议的修剪,你可以尝试在这种情况下使用两个选项:

  1. ((Get-GPO "Default Domain Policy").Id).Guid - 我的个人喜好
  2. (Get-GPO "Default Domain Policy") | select id -ExpandProperty id | select guid -ExpandProperty guid 或两者兼而有之。

两者都只是将您的 GUID 作为字符串返回。