毎週(土曜日)午後3時にスケジュールされたタスクを設定するのに問題はありませんが、月の最後の日が土曜日になると再起動する必要があります日曜日の午後3時にロールオーバーする必要があります。毎週土曜日にスケジュールされた再起動タスクを作成する
これはタスクスケジューラに除外オプションがないとわかりませんので、私のオプションが何であるか不思議です。
毎週(土曜日)午後3時にスケジュールされたタスクを設定するのに問題はありませんが、月の最後の日が土曜日になると再起動する必要があります日曜日の午後3時にロールオーバーする必要があります。毎週土曜日にスケジュールされた再起動タスクを作成する
これはタスクスケジューラに除外オプションがないとわかりませんので、私のオプションが何であるか不思議です。
1つの方法は、スクリプトを実行して、現在の日付がその月の最終日であるかどうかを確認することです。
はいの場合は、すぐに再起動しない場合は、再起動後24時間待機してください。
次のPowershellスクリプトは、あなたが望むことをします。毎週土曜日午後3時にそれを走らせてください。
#Get the last day of the current month
$lastDayOfMonth = ((Get-Date).AddMonths(1)).
AddDays(-(Get-Date ((Get-Date).AddMonths(1)) -format dd)).Date
if ((Get-Date).Date -eq $lastDayOfMonth)
{
#It's the last day of this month, reboot in 24 hours (86400 seconds)
shutdown -r -t 86400
}
else
{
#Reboot immediately
shutdown -r -t 0
}
もう1つの解決策は、サードパーティのタスクスケジューラソフトウェアです。
ありがとうございます、これはうまくいくように私はテストします! :) – Mikoyan
Matsnowが提供するがバッチファイルとして行ったのと同じ概念です。 Powershellにはたくさんのオブジェクト指向関数が組み込まれているので、バッチファイルはもう少しコードです。
@Echo off
REM Get Date and Time
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set yyyy=%dt:~0,4%
set mm=%dt:~4,2%
set dd=%dt:~6,2%
REM Get Last Day of month
call :DaysOfMonth %yyyy% %mm%
IF "%lastday%"=="%dd%" (
shutdown /r /t 86400
) else (
shutdown /r /t 0
)
GOTO :EOF
:DaysOfMonth Year Month
setlocal DisableDelayedExpansion
set /a "yy = %~1, mm = 100%~2 %% 100"
set /a "n = 30 + !(((mm & 9) + 6) %% 7) + !(mm^2) * (!(yy %% 4) - !(yy %% 100) + !(yy %% 400) - 2)"
endlocal &set lastday=%n%
GOTO :EOF
毎週土曜日に実行され、月の最後の日でない場合にのみリブートを開始するスクリプトを作成します。日曜日と同じですが、月の初めであれば再起動します。 –