powershell - nltest 输出对于与 new-object 一起使用无效吗?

标签 powershell active-directory

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

DC:\DC1.contoso.com
地址:\192.168.0.100
多姆指南:1234567a-abc1-4d66-a421-153f0116d8c7
域名:contoso.com
林名称:contoso.com
DC 站点名称:纽约
我们的网站名称:纽约
标志:PDC GC DS LDAP KDC TIMESERV....等..

我想要做的是捕获 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 输出对于与 new-object 一起使用无效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29978307/

相关文章:

Powershell 检查 OU 是否存在

c# - 从 SID 获取 user@domain 而不是 domain\user

PowerShell - 为整个脚本设置 $ErrorActionPreference

powershell - WinSCP XML 日志与 PowerShell 确认多个文件上传

c# - 服务器无法运行

.net - 在AD中搜索objectGUID

javascript - MSAL 2.*.js 是否适用于 IE 11?

c# - Powershell 中的 MessageBox 未置于最前面

powershell - 在双引号内插时PowerShell输出数组项

powershell - 如何显示 Visual Studio Online 构建任务 Write-Verbose 语句?