Powershell Active Directory查询返回空字段,该字段不应为';T
我一直在面对这个问题,它似乎没有结束,希望你能帮助我 我正在Powershell脚本中对Active Directory进行LDAP查询。直截了当这是我的代码:Powershell Active Directory查询返回空字段,该字段不应为';T,powershell,active-directory,ldap,Powershell,Active Directory,Ldap,我一直在面对这个问题,它似乎没有结束,希望你能帮助我 我正在Powershell脚本中对Active Directory进行LDAP查询。直截了当这是我的代码: $objDomain = New-Object System.DirectoryServices.DirectoryEntry("LDAP://OU=ivegotusers,DC=global,DC=foo,DC=com") $objSearcher = New-Object System.DirectoryServices.Dire
$objDomain = New-Object System.DirectoryServices.DirectoryEntry("LDAP://OU=ivegotusers,DC=global,DC=foo,DC=com")
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = "Subtree"
#Write-Host $objSearcher
$colProplist = "name", "sn", "whenCreated", "whenChanged", "createTimeStamp", "modifyTimeStamp", "displayName", "mailNickName"
foreach ($i in $colPropList){
$objSearcher.PropertiesToLoad.Add($i)
}
$colResults = $objSearcher.FindAll()
foreach ($objResult in $colResults){
$objItem = $objResult.Properties;
Write-Host -NoNewLine $objItem.name
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.displayName;
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.sn;
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.whenCreated;
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.createTimeStamp;
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.whenChanged;
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.modifyTimeStamp;
Write-Host "|";
}
因此,我们应该为每个查询匹配获取一行作为输出,行格式如下:
名称|显示名称|序号|何时创建|创建时间戳|何时更改|修改时间戳
对吧?
我检查了ADSI编辑中的数据,很多用户都有这些数据;尽管如此,产出还是
name1||sn1||||
name2||sn2||||
name3||sn3||||
name4||sn4||||
name5||sn5||||
对于相同的用户,没有一行设置了超过这两个字段。
有人能帮我弄清楚这里发生了什么吗
注意:由于服务器设置,我无法在Powershell上使用ActiveDirectory导入
谢谢你抽出时间来!
弗拉德我刚才被这个咬了一口:你有两个选择: 小写的PropertyName:
foreach ($objResult in $colResults){
$objItem = $objResult.Properties;
Write-Host -NoNewLine $objItem.name
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.displayname
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.sn;
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.whencreated;
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.createtimestamp;
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.whenchanged;
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.modifytimestamp;
Write-Host "|";
}
或使用.NET集合项属性样式语法:
foreach ($objResult in $colResults){
$objItem = $objResult.Properties;
Write-Host -NoNewLine $objItem.name
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem["displayName"]
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.sn;
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem["whenCreated"];
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem["createTimeStamp"];
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem["whenChanged"];
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem["modifyTimeStamp"];
Write-Host "|";
}
我刚才被这个咬了:你有两个选择: 小写的PropertyName:
foreach ($objResult in $colResults){
$objItem = $objResult.Properties;
Write-Host -NoNewLine $objItem.name
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.displayname
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.sn;
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.whencreated;
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.createtimestamp;
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.whenchanged;
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.modifytimestamp;
Write-Host "|";
}
或使用.NET集合项属性样式语法:
foreach ($objResult in $colResults){
$objItem = $objResult.Properties;
Write-Host -NoNewLine $objItem.name
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem["displayName"]
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem.sn;
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem["whenCreated"];
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem["createTimeStamp"];
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem["whenChanged"];
Write-Host -NoNewLine "|";
Write-Host -NoNewLine $objItem["modifyTimeStamp"];
Write-Host "|";
}
真不敢相信它起作用了!只有所有小写的属性名起了作用。当然,我现在想知道我是怎么做到不在自己之前尝试这个的。非常感谢你!真不敢相信它起作用了!只有所有小写的属性名起了作用。当然,我现在想知道我是怎么做到不在自己之前尝试这个的。非常感谢你!