【问题标题】:PowerShell cmdlet to apply Password to Never Expire policy in M365 tenancy to all users (including current and new users)PowerShell cmdlet 将 M365 租赁中的密码永不过期策略应用于所有用户(包括当前用户和新用户)
【发布时间】:2022-01-05 06:13:26
【问题描述】:

我已在 PowerShell 中运行以下 cmdlet,以在我的 M365 租赁中为所有用户禁用密码过期策略。但是,该 cmdlet 不适用于创建的新用户。有人可以解释一下如何为所有当前用户和新用户禁用该政策吗?

Get-AzureADUser -All $true | Select-Object UserprincipalName,@{
N="PasswordNeverExpires";E={$_.PasswordPolicies -contains "DisablePasswordExpiration"}

}

编辑

我已取消选中“密码过期策略”页面中的设置用户密码在几天后过期。我已运行以下 cmdlet 来检查此策略在 PowerShell 中是否已关闭。

Get-MsolPasswordPolicy

我已运行以下 cmdlet 为组织中的所有用户设置密码永不过期策略。 (经调查,本政策仅适用于现有用户,不适用于新用户)。

Get-AzureADUser -All $true | Set-AzureADUser -PasswordPolicies DisablePasswordExpiration

接下来我检查了“设置密码永不过期”政策是否已成功实施:

Get-AzureADUser -All $true | Select-Object UserprincipalName,@{
    N="PasswordNeverExpires";E={$_.PasswordPolicies -contains "DisablePasswordExpiration"}
 }

然后我在 M365 中创建了一个新用户并再次运行相同的 cmdlet。我现在可以看到新用户没有应用密码永不过期策略。

是否有一个 cmdlet 可以为所有用户(当前用户和新用户)创建一个永不过期的密码?我不想为不同的用户创建单独的策略,我想对所有人应用相同的策略。请指教。

【问题讨论】:

  • ,能否请您提供一些关于新用户的见解,您是否尝试创建新用户帖子以禁用 PasswordNeverExpires 现有用户或者您是否创建新用户然后您尝试禁用“PasswordNeverExpires” ?

标签: azure powershell office365 microsoft365


【解决方案1】:

如果您想为所有用户取消密码过期,您可以考虑为整个组织使用changing password expiration policy。

为此,请取消选中Password expiration policy page 中的设置用户密码在几天后过期:

如果您想为一组用户设置密码永不过期,但不是全部,您必须安排一个脚本。该脚本应该找到新用户并针对这些新用户运行您使用的 cmdlet。

理论上,您还可以将所有用户的密码更改为永不过期。这不需要更改您的脚本,但可能会影响性能。不建议这样做,但它可能适合较小的组织。

【讨论】:

  • 谢谢罗伯特,我刚刚用我遵循的完整过程更新了我的问题。请您阅读并提供建议吗?
  • @Holly S 我没有任何方法可以测试它,但如果您的组织策略设置为“密码永不过期”,我想您不必担心用户帐户上的PasswordNeverExpires .唯一可能重要的情况是密码更改是由有风险的登录/有风险的用户检测强制更改 - 但这只是一个猜测,因为我不知道在这种情况下会发生什么
【解决方案2】:

我们已经在本地环境中对此进行了测试,创建了一个新用户并使用上述共享 cmdlet,我们能够为所有现有用户和新用户禁用密码过期策略。

Get-AzureADUser -All $true | Select-Object UserprincipalName,@{
N="PasswordNeverExpires";E={$_.PasswordPolicies -contains "DisablePasswordExpiration"}}

Get-AzureADUser -All $true | Set-AzureADUser -PasswordPolicies DisablePasswordExpiration

以下是示例输出以供参考:

  • 下面的屏幕截图显示了所有用户的默认PasswordNeverExpires。

  • 我们创建了一个新用户,运行上述 cmdlet 后,我​​们可以将所有用户的 PasswordNeverExpires 值更改为 True,如下所示

或者,您可以使用MSonline PowerShell 模块将PasswordNeverExpires 值启用为True。

这是 PowerShell cmdlet,用于将所有用户的 PasswordNeverExpires 值更改为 True。

Connect-MsolService
$userlist = Get-MsolUser -All | select -Property UserPrincipalName,PasswordNeverExpires
foreach( $item in $userlist){
  Set-MsolUser -UserPrincipalName $item.UserPrincipalName -PasswordNeverExpires $true
}
Get-MsolUser -All| select -Property UserPrincipalName,PasswordNeverExpires

这是供参考的示例输出:

如果您仍然遇到问题,建议您使用此link 打开支持票证,技术支持团队将帮助您从平台端解决问题或通过Microsoft Q&A 进行讨论。

【讨论】:

  • 谢谢VenkateshDodda-MT,我理解这个过程并且自己测试成功了。但是,我的问题是如何创建一个自动应用于每个新用户的自定义策略?更具体地说,我希望 PasswordNeverExpires 策略在每次创建新用户时自动应用,而不是手动运行 cmdlet。这可能吗?谢谢
猜你喜欢
  • 2020-07-15
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
相关资源
最近更新 更多