Archive for 12月 25th, 2009



25
12月

毎月3週目の水曜日にOSを再起動させるWSHスクリプト on windows2003サーバー


去年仕事で購入したHP ProLiant DL160 G5 Storage Serverですが、実は今年の1月から2、3ヶ月くらいの間隔で不意に再起動するという現象にずっと悩まされておりました。

都度サポートに連絡していろいろ対策を行ったのですが、未だ解決には至っておりません。

結局Windowsサーバーはそういうものなんだ!という結論に至りました∩(・∀・)∩

不意に再起動するくらいなら月に1度定期的に再起動させてしまおう!ということで、まず再起動させるタイミングを以下の条件にしました。

1.平日であること
2.アクセスの少ない時間であること

この条件に当てはまる条件というのが掲題の「3週目の水曜日」だったのです。

※2020年まで調べてみましたが3週目の水曜日が祝日になることはありませんでした。

毎月3週目の水曜日というのは1日を1週目とした場合であり第3水曜日ではありません。

以下がそのWSHスクリプトです。

Nowweek = DatePart("w", Year(Now) & "/" & Month(Now) & "/15") Addweek = 15+(4-Nowweek) if Addweek = Day(Now) Then Set WshShell = Wscript.CreateObject("Wscript.Shell") WshShell.Run("shutdown /r /f /c ""計画的な再起動を実施します。""") End If

1行目:15日の曜日番号を割り出します。(15日は必ず3週目に属しています。)
2行目:3週目の水曜日が何日なのかを算出します。(4は水曜日を表しています。)
4行目:今日の日付が3週目の水曜日なのかをチェックします。
5行目、6行目:4行目で真と判定された場合に再起動を実施します。(shutdownのオプションは「/r」が再起動「/f」が起動中のアプリケーションを警告なしに終了「/c」以降がコメントになります。)

このスクリプトを毎週水曜日に実行されるようにタスクに登録すれば出来上がりです( ´ー`)

他にもっといい方法があるのかもしれませんが、Windows系のスクリプトなんてまともに書いたこともないのでこれが精一杯です( ゚Д゚ )