gpt4 book ai didi

powershell - 根据不同的输入在AD中找到用户的最佳方法(Get-ADUser)

转载 作者:行者123 更新时间:2023-12-03 01:02:39 24 4
gpt4 key购买 nike

我正在寻找您关于最佳方法的想法。

目标只是根据不同的可能输入来找到给定的用户。

可能是:

$input = "John,Smith"
$input = "John Smith"
$input = "John Smith(ext)"
$input = "Smith,John"
$input = "Smith John"
$input = "Smith John(ext)"

我的工作解决方案是:
if ($input -like "*(*" ) {
$input = $input -replace '\([^\)]+\)'
}

if ($input -like "*,*"){
$FullName = $input -split ","
}
elseif ($input -like "* *"){
$FullName = $input -split " "
}


get-ADUser -Filter " ( ( (GivenName -like '$($FullName[0])*') -and (SurName -like '$($FullName[1])*') ) -or ( (SurName -like '$($FullName[0])*') -and (GivenName -like '$($FullName[1])*') ) ) "

所以基本上发生了什么:

-如果输入包含括号,请删除它们以及它们之间的含义。
-如果输入包含逗号,请在该字符串上将其分割。
-如果输入包含空格,请在该空格上分割字符串。
-Get-AdUser,过滤(GivenName和Surname)或(Surname和GivenName),因为我不知道它们将按照哪个顺序排列。

它可以正常工作,但我总是很好奇寻找最佳方法。

在这种情况下,您有什么建议吗?非常感谢您的输入。

最佳答案

使用-LDAPFilter和歧义名称解析(anr):

Get-ADUser -LDAPFilter "(anr=John Doe)"
Get-ADUser -LDAPFilter "(anr=Doe John)"

只需用空格替换逗号,然后删除 "(ext)"即可。变量名 $input是保留的,因此不应使用:
$name = $name -replace ",", " "
$name = $name -replace "\(ext\)", ""

或链接 -replace运算符:
$name = $name -replace ",", " " -replace "\(ext\)", ""

搜索将是:
Get-ADUser -LDAPFilter "(anr=$name)"

关于powershell - 根据不同的输入在AD中找到用户的最佳方法(Get-ADUser),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53852347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com