【发布时间】:2020-06-21 06:37:33
【问题描述】:
我希望有人能够提供一些指导。我正在尝试构建一个 Powershell 脚本,使我能够为特定安全组的成员获取 LastPasswordChangeStamp。我正在测试的组有 10 个成员,但是当我运行脚本时,它的行为如下:
- 成功运行,没有错误
- 返回 80 个结果(8 x 10 个成员)
代码如下:
#Define the Security Group
$securityGroup = Get-MsolGroup -GroupType “Security” | Where-Object {$_.DisplayName -eq “GroupName”}
# Get Members
$securityGroupMembers = Get-MsolGroupMember -GroupObjectId $securityGroup.ObjectId
# Iterate each user
ForEach($Member in $securityGroupMembers){
#Get underlying msol user
#$user = Get-MsolUser -ObjectId -$mUser.ObjectId
#Determine password age
Get-MsolUser | select DisplayName, LastPasswordChangeTimeStamp
}
我不明白为什么它会循环多次,并希望有人可以就我哪里出错提供一些指导。
感谢您的帮助
【问题讨论】:
-
您忘记了 Get-MsolUser 的 ObjectId,因此它可能会尝试显示所有用户。记得在里面使用 $member.objectid
-
你能告诉我们
$SecurityGroupMembers和$SecurityGroup的值吗?我的一个建议是你使用智能的弯引号而不是愚蠢的直引号。大多数语言不将智能引号识别为分组分隔符,因此请尝试将-GroupType “Security”替换为-GroupType "Security" -
有时会给您带来问题的一件事是您发布的代码中的印刷引号。那些弯曲/卷曲/倾斜的引号有时会被误读为“其他”。用直引号代替它们是一种很好的自卫,这样 PoSh 就不会感到困惑。 [咧嘴]
标签: powershell azure-active-directory office365