如何从具有多个变量的PowerShell中查找Active Directory?
$ADInfo = Get-ADUser -filter {Surname -Like $ntaccount1} | Sort-Object Name
$ADInfo `
| Format-Table `
@{ Name = "Full Name"; Expression = { $_.name } },
@{ Name = "User ID"; Expression = { $_.samaccountname } } -Autosize;
这将只搜索Surname(姓氏)的目录,然后输出结果的全名和用户ID。我如何才能找到每个变量而不仅仅是姓氏?我想仿效你在实际的活动目录程序中搜索,但在PowerShell中。如何从具有多个变量的PowerShell中查找Active Directory?
我在寻找到其他的想法,但只是为了看看这是你正在寻找我的方向由和LDAP过滤什么我觉得AD查找确实
$searchString = "Matt"
get-aduser -LDAPFilter "(|(displayName=$($searchString)*)(sn=$($searchString)*)(givenName=$($searchString)*)(cn=$($searchString)*)(samaccountname=$($searchString)*))"
因此,这将搜索AD中的所有属性和返回用户(如果它们匹配“Matt *”)。遵循相同的逻辑,但让搜索更加可配置以满足您的需求。结果应该与书面结果相同。这样您可以添加/删除要搜索的属性。
$searchString = "Matt"
$properties = "displayName","sn","givenName","cn","samaccountname"
$ldapFilter = "(|$($properties | ForEach-Object{"($_=$($searchString)*)"}))"
Get-Aduser -LDAPFilter $ldapFilter
使用简单过滤嘴
无论出于何种原因-LDAPFilter
不为你工作。我们可以使用类似的逻辑来获得-Filter
的工作。属性名称将更改为与PowerShell筛选器相匹配
$searchString = "Matt"
$properties = "FirstName","LastName","Name","DisplayName","SamAccountName"
$Filter = ($properties | ForEach-Object{"($_ -Like '$searchString*')"}) -Join " -Or "
Get-Aduser -Filter $Filter
-LDAPFilter是否使用LDAP?我们正在尽快为AD广泛推广LDAP。我需要执行Get-ADUser -filter {samaccountname - 包含“stepanik”},但它表示-contains的运算符无效。如果这有效,那将是完美的。 – Aaron 2014-12-02 16:39:24
'-LDAPFilter'使用支持各种产品的LDAP协议。是的,这是AD的工作。我的环境是AD Functional level 2008 r2 – Matt 2014-12-02 16:44:27
'-Contains'用于检查包含成员的数组。 http://windowsitpro.com/blog/powershell-contains。我将为'-Filter'做这项工作# – Matt 2014-12-02 16:45:42
您需要更改“Filter”以考虑您正在查找的所有差异。可能能够使用一个小的散列表,使其更容易。有人可能会有更好的解决方案。 – Matt 2014-12-02 13:43:24
你是什么意思“每个变量”? – 2014-12-02 16:23:39
@AnsgarWiechers在AD中搜索单词“smith”,而不是搜索姓氏,查找名字,用户ID等等。 – Aaron 2014-12-02 16:32:00