Powershell - Win32_ComputerSystem class 属性 - DNSHostName

Powershell - Win32_ComputerSystem class properties- DNSHostName

我有一个 powershell 脚本,可以让我根据 OU 查询计算机的 AD。

strFilter = "computer"
$args = "Computers" 

$objDomain = New-Object System.DirectoryServices.DirectoryEntry

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = "LDAP://OU= " + $args + ",DC=domain,DC=com"
$objSearcher.SearchScope = "Subtree" 
$objSearcher.PageSize = 1000 

$objSearcher.Filter = "(objectCategory=$strFilter)"
$colResults = $objSearcher.FindAll()

foreach ($i in $colResults) 
    {
        $objComputer = $i.GetDirectoryEntry()
        Get-WMIObject Win32_ComputerSystem -computername $objComputer.Name

        $IPV6 = $false
        $arrInterfaces = (Get-WmiObject -class Win32_NetworkAdapterConfiguration -filter "ipenabled = TRUE").IPAddress

        foreach ($i in $arrInterfaces) {$IPV6 = $IPV6 -or $i.contains(":")}

        write-host "IPV6 Enabled:" $IPV6
        write-host `n
    }

它 returns 符合预期的几个条目。格式如下:

域:name.com

制造商:联想

型号:3134C2U

姓名:姓名

主要所有者姓名:姓名

总物理内存:3064381440

我的问题是,我可以过滤或格式化除返回的 "Name" 属性 之外的所有内容吗?

我以为我可以使用 Win32_ComputerSystem class 下的 DNSHostName 属性 来实现这一点,但我显然做错了什么。

如果您的目标是只显示 AD 计算机名称,您应该只使用 Get-ADComputer cmdlet。

将 WMI 数据放入变量中:

$computer = Get-WMIObject Win32_ComputerSystem -computername $objComputer.Name

那么你可以使用:

$computer.DNSHostName

或选择一些属性:

$computer | Select Name, Model, SystemType