我正在尝试创建一个脚本,该脚本将允许我输入用户名,然后向我展示该用户是AD中成员的所有组。当我在Powershell ISE中运行它时,我有以下代码可以工作,但是当我仅在Powershell中运行脚本时,它允许我输入用户名,但由于查询AD而关闭。它不会在屏幕上打印结果。
$username = Read-Host 'Please enter Username!'
get-aduser $username -Properties memberof | select -expand memberof
答案 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