[英]I would like to learn how capture the ID from Get-GPO without the extra lines of “Id : ”
我没有找到正确的方法。 我想了解如何从 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
这很简单......在你的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
属性的类型为[System.String]
,并且肯定有一个.Trim()
方法。 现在,如果您有多个项目,并且并非所有项目都具有Id
属性,或者并非所有Id
属性都具有Guid
属性,并且您遍历它们,则在输出数组时最终会得到空白。 为了避免这种情况,我们首先遍历Id
属性,然后遍历每个Guid
属性,最后以空字符串、空值和多行字符串中无关的新行的形式删除额外的空格(我们真的不应该得到最后一个,因为这些是 GUID,但我只是在这里彻底)。
这一次我将使用简写%
而不是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
作为您的标题,而不再是ID
。疯狂的 PS ...
所以对我来说这看起来是嵌套的。 如果你像我一样希望它“干净”,因为你也不喜欢上面建议的修剪,你可以尝试在这种情况下使用两个选项:
((Get-GPO "Default Domain Policy").Id).Guid
- 我的个人偏好(Get-GPO "Default Domain Policy") | select id -ExpandProperty id | select guid -ExpandProperty guid
(Get-GPO "Default Domain Policy") | select id -ExpandProperty id | select guid -ExpandProperty guid
或两者的混合。任何一个都只是将您的 GUID 作为字符串返回。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.