简单的 Active Directory 和 powershell 组合,问题

Simple Active Directory and powershell combo , issues

好吧,今天我决定要和 AD 玩得开心 PS 所以我基本上决定要编写一个脚本来访问我的 dc 及其 ou 和 sub ou 并获取我所有的 windows 服务器已部署。但是我的凭据给了我以下错误

具有 0 个参数的 FINDALL,已从服务器返回引用。 ... :(

目标是:找到所有 2008 年及更高版本的服务器,即 2012 ....这就是为什么我在计算机中使用版本标签设置为 6.1,即 2008 R2

这是我的代码::

$strFilter = "(&(objectCategory=Computer)(Versiont=6.1))"

$objDomain = New-Object System.DirectoryServices.DirectoryEntry("LDAP://OU=Windows,OU=Servers,OU=Alberta,OU=CA,OU=Shanes Home,dc=speed.speed.shane.net")
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = "Subtree"

$colProplist = "DNS Name"
foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}

$colResults = $objSearcher.FindAll()

foreach ($objResult in $colResults)
    {$objItem = $objResult.Properties; $objItem.name}

谢谢。

提示:我建议使用一个模块来简化 Powershell 对 AD 的管理。您是否有安装了 Active Directory Web 服务的 2008 R2+ 域控制器或 2003+?如果是这样,请使用 Windows Server 2008+ 或 RSAT 中的 ActiveDirectory 模块。如果没有,请尝试 Quest ActiveRoles powershell 模块。

#Import ActiveDirectory module (will fail if it's not available on your server/computer)
Import-Module ActiveDirectory

#I prefer to store the original data first just in case you want to modify or export it later.
$results = Get-ADComputer -Filter { OperatingSystem -Like "Windows Server*" -and OperatingSystemVersion -ge "6.1" } -Property OperatingSystemVersion, OperatingSystemVersion

#Only use `Format-` to display data, never store it. So I split it to a separate line.
$results | Format-Table Name, OperatingSystem -AutoSize

如果要将搜索限制在特定 OU,请将 -SearchBase "OU=Windows,OU=Servers,OU=Alberta,DC=corp,DC=contoso,DC=com" 添加到 Get-ADComputer 命令的末尾。