尝试通过powershell从AD中提取计算机列表

问题描述 投票:0回答:2

所以我试图将 AD 中的计算机列表提取到 .csv 文件中。我正在尝试使用 powershell 提取 cn、description、distinguishedName、operatingSystem、whenCreated 和 whenChanged 字段。

我使用的代码是这样的:

# Start of script

Cls

$DomainRootPath='LDAP://DC=<name>,DC=ORG'

$adsearch = New-Object  DirectoryServices.DirectorySearcher([adsi]$DomainRootPath)
$adsearch.PageSize = 1000
$adsearch.filter = ("(objectCategory=Computer)")

$adsearch.PropertiesToLoad.AddRange(@("cn"))
$adsearch.PropertiesToLoad.AddRange(@("description"))
$adsearch.PropertiesToLoad.AddRange(@("distinguishedName"))
$adsearch.PropertiesToLoad.AddRange(@("operatingSystem"))
$adsearch.PropertiesToLoad.AddRange(@("whenCreated"))
$adsearch.PropertiesToLoad.AddRange(@("whenChanged"))


$computers = $adsearch.findall()

$computers.Count

$report = @()

foreach ($objResult in $computers)
{

$objItem = $objResult.Properties

$temp = New-Object PSObject

$temp | Add-Member NoteProperty cn $($objitem.cn)
$temp | Add-Member NoteProperty description $($objitem.description)
$temp | Add-Member NoteProperty distinguishedName $($objitem.distinguishedName)
$temp | Add-Member NoteProperty operatingSystem $($objitem.operatingSystem)
$temp | Add-Member NoteProperty whenCreated $($objitem.whenCreated)
$temp | Add-Member NoteProperty whenChanged $($objitem.whenChanged)


$report += $temp
}

$csvfile="AD-All-Computers.csv"

$report | export-csv -notypeinformation $csvfile
"Wrote file for All Computers"

现在,此代码确实创建了具有列名称正确字段的 .csv。然而,它只提取目录中每台计算机的 cn 和描述。填充 .csv 时,所有其他字段均为空白

不确定代码中出了什么问题,因为我没有收到任何错误,非常感谢任何帮助。

顺便说一句,我正在运行 Windows 2008 R2 服务器,并且无法在我的环境中运行 powershell 2.0 cmdlet,因为某些系统阻止我们配置 AD 来执行此操作。

powershell csv powershell-1.0 directorysearcher
2个回答
1
投票

这是一个有趣、奇怪、令人沮丧的问题,但问题是因为当您需要用所有小写字母引用它们时,您在引用属性时使用大写字母(驼峰式)。

即而不是

$objitem.distinguishedName
应该是:
$objitem.distinguishedname

因此,用此替换您的 foreach 块,您应该获得所有这些属性:

$report = @()

foreach ($objResult in $computers)
{

$objItem = $objResult.Properties

$temp = New-Object PSObject

$temp | Add-Member NoteProperty cn $($objitem.cn)
$temp | Add-Member NoteProperty description $($objitem.description)
$temp | Add-Member NoteProperty distinguishedName $($objitem.distinguishedname)
$temp | Add-Member NoteProperty operatingSystem $($objitem.operatingsystem)
$temp | Add-Member NoteProperty whenCreated $($objitem.whencreated)
$temp | Add-Member NoteProperty whenChanged $($objitem.whenchanged)


$report += $temp
}

0
投票

只有一行代码:

Get-ADComputer -Filter * -Properties objectGUID,objectClass,DNSHostName,Enabled,Name,distinguishedName,samAccountName,SID,whenChanged,whenCreated | Select * | Export-CSV computers.txt
© www.soinside.com 2019 - 2024. All rights reserved.