无法将系统对象转换为字符串Powershell

无法将系统对象转换为字符串Powershell,powershell,Powershell,嗨,我正在尝试使用下面的powershell脚本 $get_AD_Server = (Get-WmiObject -Class Win32_NetworkAdapterConfiguration).DnsDomain | Out-String $get_Nearest_DC = (Get-ADDomainController -DomainName $get_AD_Server -Discover -NextClosestSite).Name $get_AD_Server的输出包含contos

嗨,我正在尝试使用下面的powershell脚本

$get_AD_Server = (Get-WmiObject -Class Win32_NetworkAdapterConfiguration).DnsDomain | Out-String
$get_Nearest_DC = (Get-ADDomainController -DomainName $get_AD_Server -Discover -NextClosestSite).Name
$get_AD_Server的输出包含contoso.com,但是当我在下一个变量中传递变量$get_AD_Server时,它总是出错,知道我做错了什么吗

Get-ADDomainController : The format of the specified domain name is invalid
At line:2 char:20
+ ... arest_DC = (Get-ADDomainController -DomainName $get_AD_Server.ToStrin ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (:) [Get-ADDomainController], ADException
    + FullyQualifiedErrorId : GetADDomainController:BeginProcessingOverride:DiscoverDC:1212,Microsoft.ActiveDirectory.Management.Commands.GetADDomainController

不要提取与NIC关联的DNS域,而是从
Win32\u ComputerSystem
类中提取计算机域:

$domain = (Get-WmiObject -Class Win32_ComputerSystem).Domain
$nearestDC = (Get-ADDomainController -DomainName $domain -Discover -NextClosestSite).Name

不要提取与NIC关联的DNS域,而是从
Win32\u ComputerSystem
类中提取计算机域:

$domain = (Get-WmiObject -Class Win32_ComputerSystem).Domain
$nearestDC = (Get-ADDomainController -DomainName $domain -Discover -NextClosestSite).Name

自动变量展开将返回一个集合

DNSDomain属性可能未填充。就我而言,它不是。假设您已经涵盖了这一点,我认为如果您隔离您关心的NIC配置,您可能会有更好的运气。如果将返回范围缩小为1,则对象
。DNSDomain
将是一个字符串

在我的例子中,这看起来像:

(Get-WmiObject win32_NetworkAdapterCOnfiguration -Filter "IPEnabled = 'True'").DnsDomain
如果需要,只需对过滤器进行操作,直到找到只可靠返回您关心的NIC的内容


注意:我可能误读了一些内容,但我担心下一步您会遇到问题。未经身份验证时,您可能无法查询AD域。如果你点击了类似的东西,你可以考虑使用<代码> -凭据<代码>参数>代码>获取AdDeMaNiguleP< <代码>。当然,此时它是交互式的。

自动变量展开将返回一个集合

DNSDomain属性可能未填充。就我而言,它不是。假设您已经涵盖了这一点,我认为如果您隔离您关心的NIC配置,您可能会有更好的运气。如果将返回范围缩小为1,则对象
。DNSDomain
将是一个字符串

在我的例子中,这看起来像:

(Get-WmiObject win32_NetworkAdapterCOnfiguration -Filter "IPEnabled = 'True'").DnsDomain
如果需要,只需对过滤器进行操作,直到找到只可靠返回您关心的NIC的内容


注意:我可能误读了一些内容,但我担心下一步您会遇到问题。未经身份验证时,您可能无法查询AD域。如果你点击了类似的东西,你可以考虑使用<代码> -凭据<代码>参数>代码>获取AdDeMaNiguleP< <代码>。当然,在这一点上它是交互式的。

删除
|输出字符串
-DnsDomain属性已经是stringHi Chris,仍然是一样的,它仍然说指定域名的格式无效。请尝试
(Get ADDomain)。DNSRoot
请更准确地回答您的问题,消息
$get\u AD\u Server.ToStrin…
不同于“下面的powershell脚本”(它没有
.ToString()
)。无论如何,请尝试:
-DomainName“$get\u AD\u Server”
(同时删除
| Out String
)。只需使用
$get\u AD\u Server=(get-WmiObject-Class Win32\u NetworkAdapterConfiguration)。其中({$.DNSDomain},'First').DNSDomain
删除
| Out String
DNSDomain
属性已经是stringHi,尽管如此,它仍然表示指定域名的格式无效。请尝试
(Get ADDomain)。DNSRoot
请更准确地回答您的问题,消息
$Get\u AD\u Server.ToStrin…
与“下面的powershell脚本”(没有
.ToString()
)不同。无论如何,请尝试:
-DomainName“$get_AD_Server”
(同时删除
| Out字符串
)。只需使用
$get_AD_Server=(get-WmiObject-Class Win32_networkadapter配置)。其中({$.DNSDomain},'First').DNSDomain Hi mathi mathi,这在连接到域的机器上工作得非常好,但是,我试图从Windows PE运行此命令,这就是我从NIC获取此信息的原因。如果您运行
(Get-WmiObject-Class Win32\u NetworkAdapterConfiguration),是否实际显示了正确的域名。WinPE中的DnsDomain
?是的,它确实会使您的查询和我的查询具有完全相同的输出。您好,Mathias,这在连接到域的计算机上非常有效,但是我正在尝试从Windows PE运行此命令,这就是我从NIC获取此信息的原因。如果运行
(Get-WmiObject-Class Win32\U NetworkAdapterConfiguration),是否实际显示了正确的域名.DnsDomain
在WinPE中?是的,它可以执行您的查询,而我的查询具有完全相同的输出。