Powershell Get AD用户组查询

时间:2019-06-13 08:08:10

标签: powershell

我正在尝试创建一个脚本,该脚本将允许我输入用户名,然后向我展示该用户是AD中成员的所有组。当我在Powershell ISE中运行它时,我有以下代码可以工作,但是当我仅在Powershell中运行脚本时,它允许我输入用户名,但由于查询AD而关闭。它不会在屏幕上打印结果。

$username = Read-Host 'Please enter Username!'
get-aduser $username -Properties memberof | select -expand memberof

1 个答案:

答案 0 :(得分:1)

如果将代码粘贴到已经打开的PowerShell终端中,那么可以,那肯定很奇怪。

如果右键单击并“ 使用PowerShell运行”,则这是预期的行为,因为脚本已完成。您需要告诉脚本在检索到信息后保持打开状态。最简单的方法是告诉脚本使用Read-Host

等待输入
$username = Read-Host 'Please enter Username!'
get-aduser $username -Properties memberof | select -expand memberof
Read-Host 'Done!'

更新

使用if语句是不可行的,因为它只能捕获终止错误,并且Get-ADUser不会返回terminating errors,因此您需要使用try/catch块。我过度设计了此解决方案,以向您展示如何使用不同的PowerShell功能来完成它:)

#Function to search for the user
function searchUser{
    Param([string]$userName)
    try{
        Get-ADUser -Identity $userName -Properties MemberOf | Select-Object -ExpandProperty MemberOf 
    }catch{
        return $false
    }
}

#Ask the user for input until a valid username is entered
do {
    $userInput = Read-Host "Enter a username: "
}until ($Output = searchUser -userName $userInput)

#Output the value from the searchUser function
Write-Host $Output