【问题标题】:Office 365 Powershell - Get LastPasswordChangeStamp for members of a security groupOffice 365 Powershell - 获取安全组成员的 LastPasswordChangeStamp
【发布时间】: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


【解决方案1】:

这里的问题在于您的 foreach 循环。你是说对于组中的每个成员,获取整个租户中的所有用户,并显示他们的显示名称和 lastpasswordchangetimestamp。

您可以将整个 foreach 循环替换为

$securityGroupMembers | get-msoluser  | select DisplayName, LastPasswordChangeTimeStamp

只需删除整个 foreach 循环。

【讨论】:

  • 这完全有道理@alphaz18。我已经对我的脚本进行了建议的更改,并且效果很好。感谢您的帮助
猜你喜欢
  • 2017-09-17
  • 1970-01-01
  • 2020-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-23
相关资源
最近更新 更多