gpt4 book ai didi

powershell - nltest输出是否不适用于新对象?

转载 作者:行者123 更新时间:2023-12-02 23:27:38 25 4
gpt4 key购买 nike

运行nltest命令“nltest /dsgetdc:contoso.com”时,得到以下输出:

DC:\ DC1.contoso.com
地址:\ 192.168.0.100
Dom Guid:1234567a-abc1-4d66-a421-153f0116d8c7
Dom名称:contoso.com
森林名称:contoso.com
DC站点名称:纽约
我们的网站名称:纽约
标志:PDC GC DS LDAP KDC TIMESERV .... etc ..

我正在尝试做的是捕获DC的输出,最后是“地址”字段。我尝试了以下操作,但似乎不喜欢它:

$svc=nltest /dsgetdc:contoso.com 
$obj=new-object psobject -property {DC=$svc.DC}

New-Object : Cannot bind parameter 'Property'. Cannot convert the "DC=$svc.DC" value of type "System.Management.Automation.ScriptBlock" to type "System.Collections.IDictionary". At line:1 char:36 + $obj=new-object psobject -property {DC=$svc.DC} + ~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [New-Object], ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.NewObjectCommand



所以很明显我在打错电话/错误地使用了命令。我是否应该甚至将new-object用于要执行的操作?

最佳答案

Briantist有一个很好的答案,详细说明了如何处理nltest输出的问题。由于nltest的输出已经使用name:value进行了很好的格式化,因此我建议使用 ConvertFrom-StringData

$results = ((nltest /dsgetdc:contoso.com) -replace ":","=" | 
Where-Object{$_ -match "="}) -join "`r`n" |
ConvertFrom-StringData
new-object -TypeName PSCustomObject -Property $results

我们使用 -replace ":","="将所有冒号转换为等号。然后,我们过滤掉没有等号的行。那就是删除任何状态消息,例如“命令成功完成”。 ConvertFrom-StringData需要单个字符串,因此我们将这些行与新行连接起来以形成单个字符串。 ConvertFrom-StringData生成一个哈希表,该哈希表存储在 $results中。

然后,就像您的问题和 briantists answer一样,我们制作一个 PsCustomObject。输出将如下所示。
Dc Site Name  : CON
Our Site Name : CON
DC : \DCCONTOSO.COM
Flags : GC DS LDAP KDC TIMESERV WRITABLE DNS_DC DNS_DOMAIN DNS_FOREST CLOSE_SITE FULL_SECRET WS
Address : \1254.885.1.478
Dom Name : CONTOSO.COM
Dom Guid : 0a3be324-f399-4b44-a3f1-b9c5aa6e7c5b
Forest Name : CONTOSO.COM

只需将对象创建的结果保存到变量中,然后就可以像在PowerShell中的任何对象一样访问属性。

关于powershell - nltest输出是否不适用于新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29978307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com