所以我试图将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配置为这样做。
答案 0 :(得分:1)
这是一个有趣的奇怪令人沮丧的问题,但问题是因为你在引用属性时使用大写字母(camelCase),当你需要用所有小写字母引用它们时。
即。而不是$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
}