[英]get-aduser -ldapfilter this or that
我正在尝试创建一个功能,以便可以更快地查找某人的电话号码或反向查找分机号。
到目前为止,我已将其另存为ps1文件:
$find=$args[0]
Get-ADUser -properties * -LDAPFilter "(samaccountname*$find*)" | ft samaccountname,Name,telephone number
Get-ADUser -properties * -LDAPFilter "(telephonenumber=555 555-*$find*)" | ft samaccountname,Name,telephonenumber
该代码有效,但是很明显,每次遇到第一或第二种情况时,我都会得到红色错误代码。 我已经尝试过(|(This)(That))
,我已经尝试过-erroraction silentlycontinue
,我已经尝试过-LDAPFilter (This) -OR (That)
。
我最终需要的是可以添加到个人资料中的功能,以便可以键入以下任一内容:
lookup ABC
lookup 2948
它将进行正向查找或反向查找。 这可能是一个松散的搜索,并在必要时返回一些太多的结果。
(|(firstClause)(secondClause))
是LDAP中OR
过滤器的正确语法-这不是您的问题。
这两个过滤器子句都包含语法错误。
第一个应该是(请注意=
):
(samaccountname=*$find*)
第二个无效,因为只允许前面或后面的*
。 您可以这样做:
(telephonenumber=*$find*)
然后使用Where-Object
将结果缩小为带有适当前缀的数字:
Get-ADUser -Properties telephonenumber -LDAPFilter "(|(samaccountname*$find*)(telephonenumber=*$find*))" |Where-Object { $_.telephoneNumber -like "555 555-*"}
请注意,由于在Active Directory中内部查找这些值的方式,前导*
的速度非常慢。
我可能会指定两个参数和两个单独的参数集。 例:
# Get-User.ps1
[CmdletBinding(DefaultParameterSetName="SamAccountName")]
param(
[Parameter(ParameterSetName="SamAccountName",Position=0,Mandatory=$true)]
[String] $SamAccountName,
[Parameter(ParameterSetName="TelephoneNumber",Position=0,Mandatory=$true)]
[String] $TelephoneNumber
)
$params = @{
"Properties" = "*"
"LDAPFilter" = ""
}
switch ( $PSCmdlet.ParameterSetName ) {
"SamAccountName" {
$params.LDAPFilter = "(sAMAccountName=$SamAccountName)"
}
"TelephoneNumber" {
$params.LDAPFilter = "(telephoneNumber=$TelephoneNumber)"
}
}
Get-ADUser @params
有了这个你可以写:
Get-User thisusername
要么
Get-User -TelephoneNumber thisphonenumber
我会警告不要使用-Properties "*"
因为这会很慢。 最好指定要查看的属性列表。
重新阅读您的问题并进行编辑。 这将为您工作,您可以根据需要添加格式和返回的属性。
function lookup {
param (
[Parameter(Mandatory=$True,Position=1)]
[string]$search
)
if ($search -match '[a-z][A-Z]'){
return (Get-ADUser $search -Properties TelephoneNumber).TelePhoneNumber
}
if ($search -match '[0-9]'){
return Get-ADUser -Properties TelephoneNumber -Filter "TelephoneNumber -like '*$search*'"
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.