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

时间:2015-01-26 16:29:48

标签: powershell active-directory powershell-v2.0

今天我确定我希望与AD和PS有一些乐趣,所以我基本上决定要编写一个脚本来访问我的DC和它的ou和sub ou's并抓住我部署的所有Windows服务器。但是我的脚本给了我以下错误

FINDALL带有0个参数,从服务器返回了一个引用。 ...... :(

目标是:找到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}

谢谢。

1 个答案:

答案 0 :(得分:1)

只是一个提示:我建议使用模块来简化使用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命令的末尾。