我想学习如何从Get-GPO中获取ID,而不需要额外的" Id:"

时间:2015-02-16 21:18:24

标签: powershell gpo

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

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

--- ---结果

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

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

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

2 个答案:

答案 0 :(得分: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

编辑:哇,我把这个挂了两年?我的不好......为了扩展删除空白条目,GPO对象有几个属性。其中一个属性是Id,其类型为[System.Guid],并且具有Guid属性,这是获取GPO的GUID的最终目标。 Guid属性的类型为[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。

答案 1 :(得分: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作为字符串返回。