我正在尝试用域中的服务器填充列表,但我获得了部分成功。我的列表中有5个项目,这与我拥有的服务器数量一样。
不幸的是,它们都被称为[Collection]
表单是使用Sapien Powershell Studio生成的
$strCategory = "computer"
$strOperatingSystem = "Windows*Server*"
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.Filter = ("OperatingSystem=$strOperatingSystem")
$colProplist = "name"
foreach ($i in $colPropList) { $objSearcher.PropertiesToLoad.Add($i) }
$colResults = $objSearcher.FindAll()
foreach ($objResult in $colResults)
{
$objComputer = $objResult.Properties;
$objComputer.name
$checkedlistbox1.Items.add($objComputer.name)
}
我该怎么做才能在核对清单中显示正确的名字。
感谢您的帮助:)
答案 0 :(得分:0)
来自DirectorySearcher.FindAll()
方法的结果对象包含一个名为Properties
的特殊属性,该属性返回类型化的集合,其中包含在AD中找到的对象的属性值。
这意味着您可以轻松完成
. . .
$colResults = $objSearcher.FindAll()
foreach ($objResult in $colResults) {
$checkedlistbox1.Items.add($objResult.Properties['name'][0])
}
答案 1 :(得分:0)
我建议您改用Get-ADComputer获取服务器列表。
您只需循环访问列表,然后将服务器名添加到检查列表中
$Servers= Get-ADComputer -Filter {OperatingSystem -Like 'Windows *Server*'} #-Property * #the property flag is not needed if you just want the Name (see comment from Theo)
foreach ($srv in $Servers) {
#Unmark to debug
#$srv.Name
#$srv.OperatingSystem
$checkedlistbox1.Items.add($srv.Name)
}