Home > Windows にまつわる e.t.c.

今月の Windows Update 日を PowerShell で取得する


Windows Server の運用をしているのと、自動化の一環で定例の Windows Update 日(第二火曜日の翌日)を取得したいと思うことがあります。

という事で、PowerShell 関数作ってみました
(スマートなアルゴリズムが思いつかなかったので、少々力技ですけど)

###############################################
# Windows Update 日を取得する(日本)
###############################################
function GetWindowsUpdateDay([datetime]$TergetDate){

    # 1日の曜日と US Windows Update 日のオフセット ハッシュテーブル
    $DayOfWeek2WUOffset = @{
        [System.DayOfWeek]"Wednesday"   = 13    # 水曜日
        [System.DayOfWeek]"Thursday"    = 12    # 木曜日
        [System.DayOfWeek]"Friday"      = 11    # 金曜日
        [System.DayOfWeek]"Saturday"    = 10    # 土曜日
        [System.DayOfWeek]"Sunday"      = 9     # 日曜日
        [System.DayOfWeek]"Monday"      = 8     # 月曜日
        [System.DayOfWeek]"Tuesday"     = 7     # 火曜日
    }

    # 年月が指定されていない(default)
    if( $TergetDate -eq $null ){
        # 今の日時
        $TergetDate = Get-Date
    }

    # 1日
    $1stDay = [datetime]$TergetDate.ToString("yyyy/MM/1")

    # US Windows Update 日のオフセット
    $Offset = $DayOfWeek2WUOffset[$1stDay.DayOfWeek]

    if( $Offset -ne $null ){
        # US Windows Update 日
        $WUDayUS = $1stDay.AddDays($Offset)

        # 日本の Windows Update 日(US Windows Update の翌日)
        $WUDay = $WUDayUS.AddDays(1)
    }
    else{
        $WUDay = $null
    }

    return ($WUDay).ToString("yyyy/MM/dd")
}

 

おまけ機能で、2017/6 とか年月を渡すと、その月の Windows Update 日を返します。

インストールしたい場合は、リポジトリ公開しているので、そちらから入手してください。

GetWindowsUpdateDay
https://github.com/MuraAtVwnet/GetWindowsUpdateDay

git@github.com:MuraAtVwnet/GetWindowsUpdateDay.git

 

関連情報

.ps1 に組み込んで使うこと想定で書きましたが、PowerShell プロンプトで実行したい場合はこちらもどうぞ

関数を PowerShell プロンプトで実行する
http://www.vwnet.jp/Windows/PowerShell/2016100401/UseFunctionInPsPrompt.htm

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.