首页 > 解决方案 > 无法将系统对象转换为字符串 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 的输出包含 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

标签: powershell

解决方案


不要获取与 NIC 关联的 DNS 域,而是从Win32_ComputerSystem类中提取计算机域:

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

推荐阅读