我正在使用带有菜单的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')
答案 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
可以解决问题。 *颜色是可选的。我只喜欢青色。