Is there a way to schedule changes in group policy in the future?

We want to periodically (every week or two) change the Welcome Screen when a user starts their computer.  Currently we do this by manually editing the GPO under Computer Configuration, Policies, Security Settings, Local Polcies/Security Options / Interactive Logon, and changing the Message text and the message title.

We'd prefer to automate this, i.e., every week, it would pull a new message and a title from somewhere (like a textfile or something).  We'd even be willing to put in 26 or 52 manual entries if we only had to do it once a year.  Is there any way to do this?

Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Will SzymkowskiSenior Solution ArchitectCommented:
Unfortunately in Active Directory there are no Native Commands to automate this process base on a schedule. You will need to look at something like System Center Configuration Manager. This will allow you to do all of your scheduling etc from a centralized console.


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
PberSolutions ArchitectCommented:
As Will mentioned, you can't do it natively.   Normally GPO's are the way to go, but for this case, maybe not.

All the GPO does is edit this key on each machine:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
The values are:

You could write a script that reads the Title and Message from a file (based on the date) and push it out to all your clients.   The downside is that all your clients need to be online when it pushes the update.  You could use a GPO to execute the script, you would also have to remove the GPO setting for changing the message text and title.
Joseph MoodyBlogger and wearer of all hats.Commented:
Not a great way to do this with Group Policy. You could precreate GPOs with the text and use the PowerShell cmdlet set-gplkink. Basically, you would link the GPO when it is needed based on a date.
Pig_TroughAuthor Commented:
Well, I guess I could just build a script or .msi that could set these registry values on local machine by itself (i.e., trigger dates, Captions, and Texts would all be built into the code like in arrays), depending on the system date, and pop the appropriate variable into

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\LegalNotice[Caption|Text]. Then save that to through GPO to all machines so that it's saved in autostart autostart (It would take one reboot for it to take effect).  For example:

Module Module1
    Dim strTitle As String
    Dim StrText As String
    Sub Main()
        '// I'm sure this is about the most efficient code possible; just trying to 
        '//     make it clear what I'm trying to do.

        Select Case GetWeekNo()
            Case 1  '// I don't know if I start from 1 or 0; doesn't matter
                strTitle = "Happy New Year"
                StrText = "This is the most awesome week of the year."
            Case 2
                strTitle = "Its Probably cold outside"
                StrText = "Since it's still the second week of the year, it's probably cold outside..."
            Case 3
                ' ... and on and on again 50 more times {give or take}
            Case 52
                strTitle = "Happy Holidays"
                StrText = "Last week of the year, it appears"
            Case Else
                strTitle = "Title"
                StrText = "Welcome"
        End Select

        With My.Computer.Registry
                                      "LegalNoticeCaption", strTitle)
                                      "LegalNoticeText", StrText)
        End With
    End Sub
    Function GetWeekNo() As Long
        '// returns the weeknumber of the current date, roughly
        Dim d1 As Date = DateSerial(Year(Now.Date), 1, 1)
        Dim d2 As Date = DateSerial(Year(Now.Date),
        Dim t As Long
        t = DateDiff(DateInterval.WeekOfYear, d1, d2)
        Return t
    End Function
End Module

Open in new window

Comments? (Yes, yes, other than my coding sucks...:)

It's not incredibly date sensitive; we just want to change the messages around every week or so, and I don't want to have to go in and change this manually every week.

I'm sure there's far more efficient ways to code this -- that's not exactly my question - should an approach like this work?

Also, of course, I'd have to kill the existing GPO.

Seth SimmonsSr. Systems AdministratorCommented:
This question has been classified as abandoned and is closed as part of the Cleanup Program. See the recommendation for more details.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Server OS

From novice to tech pro — start learning today.