Powershell 如何以同步命令的形式运行Get-ADPrincipalGroupMembership?
我正在尝试运行一个脚本,从广告中获取用户信息。在提供员工ID后,脚本将获取所有用户的组并将其打印为列表。之后,它会获取更多属性,如SamAccountName、LockedOut等。然后它会检查用户是否是“eTips”组的成员 我的问题是,出于某种原因,脚本的输出并没有按照脚本编写的顺序显示 代码如下:Powershell 如何以同步命令的形式运行Get-ADPrincipalGroupMembership?,powershell,Powershell,我正在尝试运行一个脚本,从广告中获取用户信息。在提供员工ID后,脚本将获取所有用户的组并将其打印为列表。之后,它会获取更多属性,如SamAccountName、LockedOut等。然后它会检查用户是否是“eTips”组的成员 我的问题是,出于某种原因,脚本的输出并没有按照脚本编写的顺序显示 代码如下: $EmpID = Read-Host "Enter Employee ID" $ShowMemberOf = Read-Host "Want to see all the groups he m
$EmpID = Read-Host "Enter Employee ID"
$ShowMemberOf = Read-Host "Want to see all the groups he members of (takes time...)? (y/n)"
if ($ShowMemberOf -eq "y" -or $ShowMemberOf -eq "yes") {
$User = get-aduser -Filter {EmployeeID -like $EmpID} | Select-Object -ExpandProperty SamAccountName
Write-Host "Group list:"
Get-ADPrincipalGroupMembership $User | select name
Write-Host "The rest of the user's info:"
get-aduser -Filter {EmployeeID -like $EmpID} -Properties * | Select-Object SamAccountName, PasswordExpired,
PasswordLastSet, OfficePhone, LockedOut, Enabled, CN
$MemberOfEtips = get-aduser -Filter {EmployeeID -like $EmpID} -Properties MemberOf | Select-Object -ExpandProperty MemberOf | Select-String -Pattern "etips"
if ($?) {
write-host "Member of an eTips group"
}
else {
write-host "NOT member of eTips group"
}
}
else {
Write-Host "The rest of the user's info:"
get-aduser -Filter {EmployeeID -like $EmpID} -Properties * | Select-Object SamAccountName, PasswordExpired,
PasswordLastSet, OfficePhone, LockedOut, Enabled, CN
$MemberOfEtips = get-aduser -Filter {EmployeeID -like $EmpID} -Properties MemberOf | Select-Object -ExpandProperty MemberOf | Select-String -Pattern "etips"
if ($?) {
"Member of an eTips group"
}
else {
"NOT member of eTips group"
}
}
这是输出:
Enter Employee ID: 4449871
Want to see all the groups he members of (takes time...)? (y/n): y
Group list:
The rest of the user's info:
name
----
Domain Users
SMS_USERS
dg_computingl
ManagerUsers
eTips
Member of an eTips group
如您所见,即使“Get-ADPrincipalGroupMembership”cmdlet尚未完成,脚本仍将继续运行。因此,结果是我在“用户信息的其余部分”下获取组列表,而不是在“组列表:”下
第二个奇怪的是,正因为如此,它甚至没有运行这个部分:
get-aduser -Filter {EmployeeID -like $EmpID} -Properties * | Select-Object SamAccountName, PasswordExpired,
PasswordLastSet, OfficePhone, LockedOut, Enabled, CN
它只是跳转到检查用户是否属于eTips组的部分
请解释一下我做错了什么
Write Host
无论您在何处使用它,您使用的其他命令的行为都类似于Write Output
,这就是为什么顺序看起来很奇怪。只需将要输出的字符串放在它们自己的行上,以具有相同的行为和适当的显示getaduser
命令确实运行,但我想它根本不会产生任何输出,您应该单独检查它$memberofeips
运行if
,而不是$?
,但这可能只是我不知道的模式Write Host
无论您在何处使用它,您使用的其他命令的行为都类似于Write Output
,这就是为什么顺序看起来很奇怪。只需将要输出的字符串放在它们自己的行上,以具有相同的行为和适当的显示getaduser
命令确实运行,但我想它根本不会产生任何输出,您应该单独检查它$memberofeips
运行if
,而不是$?
,但这可能只是我不知道的模式首先,谢谢你!删除
写入主机
解决了此问题。1。首先,谢谢你!删除写入主机
解决了此问题。2.现在它运行并显示输出(在此之前,如果我单独运行它,它会显示输出)。3.$?
保存最后一个输出并检查它是否正确(我在阅读了其他人的问题后使用了它)。我使用它是因为当我尝试if($memberofeips-eq$true)
时,它不起作用。我猜这是因为$MemberOfEtips
的值不是布尔值。4.我在想如果($memberofeips){#…}:)你的方法有效的话。所以不需要-eq$true
,很高兴知道这一点。再次感谢你!首先,谢谢你!删除写入主机
解决了此问题。1。首先,谢谢你!删除写入主机
解决了此问题。2.现在它运行并显示输出(在此之前,如果我单独运行它,它会显示输出)。3.$?
保存最后一个输出并检查它是否正确(我在阅读了其他人的问题后使用了它)。我使用它是因为当我尝试if($memberofeips-eq$true)
时,它不起作用。我猜这是因为$MemberOfEtips
的值不是布尔值。4.我在想如果($memberofeips){#…}:)你的方法有效的话。所以不需要-eq$true
,很高兴知道这一点。再次感谢你!