我有一个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
}
按预期返回多个条目。采用以下格式:
域名:name.com
制造商:LENOVO
型号:3134C2U
姓名:姓名
PrimaryOwnerName:name
TotalPhysicalMemory:3064381440
我的问题是,我可以过滤或格式化除了"名称"返回的属性。
我想我可以使用Win32_ComputerSystem类下的DNSHostName属性来实现这一点,但我做错了。
答案 0 :(得分:1)
将WMI数据放在变量中:
$computer = Get-WMIObject Win32_ComputerSystem -computername $objComputer.Name
然后你可以使用:
$computer.DNSHostName
或选择一些属性:
$computer | Select Name, Model, SystemType
答案 1 :(得分:0)
如果您的目标是仅显示AD计算机名,则应使用Get-ADComputer cmdlet。