A PowerShell function to determine Patch Tuesday based on the many examples you find on the internet but changed to support the month and year parameters you can supply the -Verbose parameter for Verbose output however in this specific function that output is quite limited.
I use this function combined with others to define the moments that Windows Updates are allowed to be installed on the managed server environment. The update moments are all based on a fixed cycle of x days after patch Tuesday for Pilot and xx days for Production servers.
NOTE: By including the SYNOPSIS and other information you can use get-help on the function to find out what parameters you can specify or read what this function actually can be used for. I can highly recommended to always include this information in your PowerShell function(s) so that anybody can understand it.
Code:
Function Get-PatchTuesday { <# .SYNOPSIS Returns the patch Tuesday date for current month and year or based on supplied parameters. .EXAMPLE Get-PatchTuesday -Month 1 -Year 2018 .EXAMPLE Get-PatchTuesday -Month 9 .PARAMETER Month The month parameter can be used to specify a specific month. .PARAMETER Year The year parameter can be used to specify a specific year. #> Param( [Parameter(Mandatory=$false,ValueFromPipeline=$true)] [int]$Month = (Get-Date).Month, [Parameter(Mandatory=$false)] [int]$Year = (Get-Date).Year ) Write-Verbose "Patch Tuesday Month : $($Month)" Write-Verbose "Patch Tuesday Year : $($Year)" $FindNthDay = 2 $WeekDay = "Tuesday" $WorkingDate = Get-Date -Month $Month -Year $Year $WorkingMonth = $WorkingDate.Month.ToString() $WorkingYear = $WorkingDate.Year.ToString() [datetime]$StrtMonth = $WorkingMonth + "/1/" + $WorkingYear while ($StrtMonth.DayofWeek -ine $WeekDay) { $StrtMonth = $StrtMonth.AddDays(1) } $PatchTuesday = $StrtMonth.AddDays(7*($FindNthDay-1)) return $PatchTuesday }
Hi Marcel, under which license did you publish this code.
I would like to use it in an Blog Post.
Hi Fabian,
Not sure what the best license would be for this code but I guess GNU GPL v3 seems like a good match. You can use it in your blog post and I would appreciate it if you would share the link to your blog post and add a source link in it to this code.
Soon I will try and add some more code etc. to my blog since I wrote many more scripts and modules also for Configuration Manager, just been a bit busy at work and privately.