按名称和samaccountname变量进行Powershell AD查找

时间:2018-01-21 08:15:16

标签: powershell active-directory

两个问题,第一个可能很简单但是非常烦人。我正在使用用户名变量作为属性运行AD查找脚本:

[string]$FirstName = Read-Host "User First Name"
[string]$LastName = Read-Host "User Last Name"
[string]$FullName = "*$FirstName* *$LastName*"
write-host
Get-ADUser -Filter {name -like $FullName} -properties * | select-object name, samaccountname | sort-object
read-host "Press Enter to exit"

问题是“读取主机”被解释为同一命令的一部分,查询结果出现在提示之后。我想暂停脚本,以便在控制台关闭之前通过按Enter键从屏幕上读取结果。我一直在尝试使用括号或不同类型的循环,但却无法弄清楚应该如何进行循环。

我的第二个问题是我想将samaccountname作为搜索属性。像这样:

[string]$Login = Read-Host "User Login name"
[string]$LoginName = "*$Login*"

应该添加变量以过滤类似于使用FullName变量的方式。

3 个答案:

答案 0 :(得分:0)

1)。 暂停脚本并且仅在输入后继续的更好方法是使用:

$host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") > $null

查询应该在显示Get-ADUser后显示,如果它仍然无效,可能会提交一些输出示例或尝试从Get-ADUser * | Where-Object {$_.Fullname like $Fullname}获取AD用户

2.)我在这里并没有完全理解你的问题,但如果你想通过他的登录名获取和用户,你可以这样做:

$login = Read-Host "Login name"
Get-ADUser $login | select-object name, samaccountname | sort-object

答案 1 :(得分:0)

我自己设法解决了这个问题。对于第一个问题,在管道末尾添加“format-table”会关闭命令,之后脚本会正常进行。

对于第二个问题,作为一种解决方法,我将查询分解为两个独立的问题。第一个是搜索全名,第二个是搜索登录名:

Get-ADUser -Filter {name -like $FullName} -properties * | select-object name, samaccountname | sort-object name | format-table
write-host
Get-ADUser -Filter {samaccountname -like $LoginName} -properties * | select-object name, samaccountname | sort-object name | format-table

答案 2 :(得分:0)

有助于您找到问题的解决方案,

我也会把我所做的事情放在这里,也许你可以使用它。

首先是第一部分:

$FirstName = Read-Host "Please provide the Fist name of the User: "
$LastName = Read-Host "Please provide the Last name of the User: "
$Fullname = "$FirstName $LastName"
$Users= Get-AdUser -Filter {name -like $FullName} -Properties * | Select Name, Samaccountname | Sort-Object -Verbose
Get-AdUser -Filter {name -like $FullName} -Properties * | Select Name, Samaccountname | Sort-Object -Verbose
#$Users

您可以取消注释最后一个用户变量,以便在屏幕上显示结果。

截至您的第二个问题,您可以使用-or,以便您可以使用$ fullname或$ login

进行搜索
$Login = Read-Host "User Login name"
Get-ADUser -Filter {name -like $FullName -or samaccountname -like $Login } -properties *

在运行代码之前,我更喜欢选择,就像我在AD上检查一样

如果你想给我发送我可以做的代码,我只是不想把这个答案与你提出的不同。