获取广告组时,PowerShell脚本无法按预期工作

时间:2019-05-24 20:14:01

标签: powershell active-directory

我正在使用带有菜单的PowerShell脚本来选择在Active Directory中搜索信息的不同方法。使用Get-ADUser的命令可以正常工作,但是使用Get-ADPrincipalGroupMembership的命令具有奇怪的行为。当我选择该选项(3)并输入用户名并运行命令时,什么都不会输出到显示器,如果我随后通过使用菜单上的(Q)退出,则组将显示。

function Show-Menu 
{ 
     param ( 
           [string]$Title = 'AD Search Tool' 
     ) 
     cls 
     Write-Host "================ $Title ================" 

     Write-Host "1: Search Users by Title" 
     Write-Host "2: Press '2' for this option." 
     Write-Host "3: List User's Groups" 
     Write-Host "Q: Press 'Q' to quit." 
} 

do 
{ 
     Show-Menu 
     $input = Read-Host "Please make a selection" 
     switch ($input) 
     { 
           '1' { 
                cls 
                $title = Read-Host -Prompt 'Enter Title'
                if ($title){
                    Get-ADUser -Properties SamAccountName, Enabled, Title, EmployeeID -Filter "(Title -eq '$title') -and (Enabled -eq 'True')" | select Enabled, EmployeeID, Name, SamAccountName, Title 
                }

           } '2' { 
                cls 
                'You chose option #2' 

           } '3' { 
                cls 
                $user = Read-Host -Prompt 'Enter User Name'
                if ($user){
                    Get-ADPrincipalGroupMembership $user | select name | sort name 
                }

           } 'q' { 
                cls
                return 
           } 
     } 
     pause 
} 
until ($input -eq 'q')

1 个答案:

答案 0 :(得分:1)

只需使用Write-Host立即写入结果。 要通过管道完成此操作,可以先使用Out-String

因此

 Get-ADPrincipalGroupMembership $user | select name | sort name  | Out-String | Write-Host -ForegroundColor Cyan

代替

 Get-ADPrincipalGroupMembership $user | select name | sort name

可以解决问题。 *颜色是可选的。我只喜欢青色。