【问题标题】:PowerShell script Scheduled Task change local user password value based on set passwordPowerShell脚本计划任务根据设置密码更改本地用户密码值
【发布时间】:2021-06-27 08:45:28
【问题描述】:

我正在编写一个将在任务计划程序中运行的 PowerShell 脚本。 我希望它的工作方式是:

默认值设置为强制用户在下次登录时更改密码: net user su /logonpasswordchg:yes

现在代码会是这样的:

$password = Azerty123! 如果 $password 与 $password 不同 将密码从“用户下次登录时必须更改密码”更改为“密码永不过期” 否则留下下次登录时更改密码的值

经过多次测试,我认为需要根据当前密码切换以下2个值

  1. Set-LocalUser -Name "su" -PasswordNeverExpires:$true
  2. Set-LocalUser -Name "su" -PasswordNeverExpires:$false
  3. net user su /logonpasswordchg:yes
  4. net user su /logonpasswordchg:no

脚本基本上是用Intune部署的,创建一个Task Scheduler,它会每天检查一次密码值,如果密码已更改,则密码值更改为永不过期,只要密码为从未更改,下次登录时将其保留为更改密码。 谁可以帮我这个事 ?对不起我笨拙的解释

【问题讨论】:

  • 你怎么知道用户'su'的密码?
  • 您还有其他需要密码才能过期的用户吗?作为替代方法,您可以使用本地 GPO?本地计算机策略 -> 计算机配置 -> Windows 设置 -> 安全设置 -> 帐户策略 -> 密码策略设置 ‘Maximum password age’ 为 ‘0’
  • 很遗憾,没有,最终目标是通过 Intune 将此脚本部署在 Intunewin 包中。除非有办法在 Intune 中使用您描述的 GPO 进行类似的操作,否则可能会奏效,但我没有找到任何相关信息。
  • 我对 InTune 的处理不多,但您似乎可以在那里进行本地 GPO 设置:docs.microsoft.com/en-us/mem/intune/configuration/…。或者,您可以在 1 off 脚本net accounts /maxpwage:0 中调用它。但在我看来,政策方法会更加确定
  • @andr3yk 感谢您的回复,它实际上对我帮助很大,我按照您的建议使用了 net accounts 命令,它完成了工作。您能否将其发布为对该主题的实际回复,以便我可以将此问题设置为已解决?最好的。

标签: powershell scheduled-tasks change-password


【解决方案1】:

另一种方法是在 Windows 系统上全局更改密码到期设置。 这将适用于所有用户,并且可以在特定用户更改密码之前完成。它可以通过运行以下命令来完成:

net accounts /maxpwage:0

注意:查看答案的 cmets 部分以深入讨论其他方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2014-10-12
    • 2023-03-27
    • 1970-01-01
    • 2014-07-07
    相关资源
    最近更新 更多