今天我确定我希望与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}
谢谢。
答案 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
命令的末尾。