【问题标题】:Alert for an action every 85 days每 85 天提醒一次行动
【发布时间】:2021-07-28 15:02:08
【问题描述】:

我正在编写一个脚本,显示距离我们应该更改密码的剩余天数。问题是现在,距离密码需要更改大约还有 11 天。我正在为编写脚本的逻辑而苦苦挣扎。 85 天倒计时的开始是 2021 年 5 月 16 日。接下来的 85 天从 2021 年 8 月 9 日开始。我希望在 85 岁之后重置这些天。老实说,我什至不知道如何开始。也许是一个返回 85 - $currentDate 然后在 85 之后重置的 for 循环,但我不知道如何让它在 85 天的中间今天开始。

【问题讨论】:

    标签: powershell for-loop logic


    【解决方案1】:

    在您的脚本中,您可以创建一个开始日期 May 16, 2021 并根据需要将该日期增加 85 天:

    # Original Start Date at 12:00 AM
    $85Date = [datetime]'May 16, 2021'
    # Today's date
    $Current = Get-Date
    # checks if today is past the 85 day date
    # if you didn't change the password with 0 days remaining, this logic fails
    while ($Current.Date -gt $85Date) {
        # increments $85Date by 85 days
        $85Date = $85Date.AddDays(85)
    }
    # check when there are 0 days remaining
    if ($Current.Date -eq $85Date) {
        # Send alert here for 0 days remaining
    }
    # output how many days remain
    '{0} days remaining until password expiration' -f ($85Date - $current.Date).Days
    

    除非您添加该逻辑,否则代码不会知道密码是否已更新。它只是假设您每次都等到第 85 天重新设置它。要添加更多智能,您需要执行以下操作之一:

    1. 添加测试密码已重置的逻辑
    2. 让密码重置更新可从 PowerShell 读取的帐户属性。可以使用该日期代替今天。
    3. 使用密码更改日期更新一些其他工件,例如数据库表或文件。然后让脚本在每次运行时读取它。

    将有许多替代方案来完成这项工作。到目前为止,我们不知道提供帐户的服务是什么,将使用什么警报机制,或者您的环境中的 PowerShell 解决方案有什么限制。

    【讨论】:

    • 我真的只是在寻找一个基本的计数器。我只想在一封电子邮件中设置一个每日计数器,让读者知道他们需要多久才能更改密码,然后在 85 之后重置密码。我想真的没有简单的方法。从这段代码看来,我必须每 85 天手动插入一个新的 $85date?
    • 没有。你只是设置了一个原始的 85 日期。该脚本将根据今天的日期自动更新它。如果今天大于 85 日期,则将创建一个比前一个日期晚 85 天的新日期,直到新的 85 日期相对于今天在未来。
    • 啊,我现在看到了,谢谢你的帮助。我认为这正是我一直在寻找的,但无法理解逻辑。谢谢!
    • 另一方面,您的评论告诉我,我可以在 powershell 中使用 f-strings,这很整洁。所以也谢谢你,哈哈
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多