1

我没有找到正确的方法。我想了解如何从 Get-GPO 捕获 ID,而不需要额外的“Id:”行。当我试图删除第一部分时;我了解到我正在使用“System.Object 的 BaseType”而不是数组。所以我还没有找到任何简单的方法来删除它或在没有额外文本的情况下选择它自己的 ID。谢谢你的帮助。我确实知道“默认域策略”ID 始终是相同的 ID)这是我尝试运行的示例和我想要获得的示例。

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

- -结果 - -

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

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

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

2 回答 2

2

这很简单......在您的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,这是此处的最终目标,用于获取 GPO 的 GUID。该Guid属性是 type [System.String],并且肯定有一个.Trim()方法。现在,如果您有多个项目,并且并非所有项目都有Id属性,或者并非所有Id属性都有Guid属性,并且您遍历它们,那么当您输出数组时最终会出现空白。为了避免这种情况,我们首先遍历Id属性,然后对我们遍历的每个属性Guid属性,最后以空字符串、空值和多行字符串中多余的新行的形式删除额外的空格(我们真的不应该得到最后一个,因为这些是 GUID,但我只是在这里彻底)。

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

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

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

于 2015-02-16T21:28:17.830 回答
0

我也遇到了这个问题,也发现了同样的行为。
如果您使用 -expandproperty ID(或(Get-GPO "Default Domain Policy).Id),您将获得GUID作为您的标题,而不再是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 作为字符串返回。

于 2020-12-14T13:05:25.677 回答