cheshire-boy

システム・サービス

【Set-Date】PowerShellでシステム日付・システム時間を設定する方法

投稿日:2016年11月20日 更新日:

こんにちは。チェシャ男です。(-皿-)

今回は、

【PowerShell でシステムの日時を設定する方法】

についてご紹介します。

今回紹介する ”Set-Date” コマンドレットではマシンのシステム日時を設定・変更することができます。

サマータイムのために「1時間戻す」時や、久しぶりに起動して日付が合っていないPCで「日付を変更する」時などに役立ちますね。

Set-Date” コマンドレットではシステムに変更を加えるため管理者モードで実施する必要があります。

システム日時を取得する方法はこちら↓の記事をご参考ください。

 

スポンサーリンク

Set-Date でシステム日時を変更する

日付/時刻を設定するコマンドレットに

Set-Date

というものがあります。

【コマンドレット】

Set-Date

【オプション】

-Date <日付時刻データ>
-DisplayHint <表示タイプ>
-Adjust <タイムスパン>
-Confirm
-Watif

【入力】

System.DateTime
System.TimeSpan

【出力】

System.DateTime

【エイリアス】

なし

管理者として実行するにはスタートメニューから PowerShell を[管理者として実行する]から起動します。

管理者として実行-チェシャわら
管理者として実行-チェシャわら

上図のように PowerShell を、[管理者として実行]から起動します。

起動した PowerShell 画面に、「管理者」と記載があれば管理者として起動が成功しました。(※下図参照)

管理者実行のPowershell-チェシャわら
管理者実行のPowershell-チェシャわら

"-Date" オプションで日時を設定する

"-Date" オプションで日時を指定して変更する場合は、"/" スラッシュ)や”:" (コロン)を使用して変更する日時/時刻を指定します。

例えば、

2016 年 1 月 23 日 午前 4 時 56 分

と設定したい場合は、

2016/1/23 4:56 AM

または

1/23/2016 4:56 AM

などと指定することで設定が可能です。実際に時刻を変更してみます

※時刻を強制的に変更するとソフトウェア等に影響が出る可能性があるためご注意ください

Get-Date で確認しているように「2016年1月23日 4:56:00」に変更されていることがわかります。

Get-Date コマンドレットと組み合わせて日時を設定する

上にも書いたように” Set-Date” コマンドレットはインプットとして「System.DateTime」を渡すことで時刻を設定しています。

任意の「System.DateTime」型のデータを取得するにはGet-Dateコマンドレットを使用すればいいようです。

”-Date” オプション内で Get-Date コマンドレットを使ってみましょう。

このように Get-Date コマンドレットSet-Date コマンドレットを組み合わせることで日付や時刻を変更することもできます。

何度も言いますが Set-Date コマンドレットで設定する日時は「System.DateTime」型でなければいけないので

  • 「年」だけ変えたい
  • 「月」だけ変えたい
  • 「時」だけ変えたい

といった場合には Get-Date コマンドレットを使用する方が楽なようですね。

例えば、

「年」だけ変更したい

⇒ Get-Date -Year <変更したい年>

「月」だけ変更したい

⇒ Get-Date -Mounth <変更したい月>

「時」だけ変更したい

⇒ Get-Date -Hour <変更したい時>

という風に Get-Date コマンドレットを使って、"Set-Date" コマンドレットの "-Date" オプション内に指定します。

以下に実行例を載せておきます。

”-Adjust” オプションで時刻を調整する

時刻を調整するには ”-Adjust” オプションを使用します。

この「調整」とは、

・時(Hour)を1時間進める

・分(Minute)を10分だけ戻す

といったように現在のシステムの時間から「○○進める」「○○戻す」といった操作を行うことを指します。

時計の時刻調整のツマミを回すようなものをイメージすればわかるでしょうか。

調整方法は、

  • 時間を進める場合は”+ (プラス)
  • 時間を戻す場合は”- (マイナス)

を指定して、時間 : 分 : 秒 を設定します。

1時間30分時間を進める

⇒ -Adjust 1:30:00

10分30秒時間を戻す

⇒ -Adjust -0:10:30

この時 ”-Adjust” オプションには「System.TimeSpan」型で時間調整内容が渡されています。

実際に実行してみると、

のようになります。

ちなみに調整範囲を「○:○:○:○」と指定した場合は「日(Day):時(Hour):分(Minute):秒(Srcond)」に変換されるので日~秒がまとめて調整されます。

また「時(Hour)」については”0~23”だけ受け付けるようで「24以上(または-24以下)」を指定した場合「日(Day)」と判定されてしまうようです。

Get-Date のメソッドで日付と時刻を調整する

-Adjust” オプションを使用した日時の修正は説明しましたが少々使いにくいかもしれません。

別の方法として「System.DateTime」を使用した調整方法があります。

もう少しわかりやすく言い換えると

Get-Dateコマンドレットを使用する

方法です。

Get-Date コマンドレットのメソッドを使用して日付や時間を調整します。メソッドについてはメソッドとプロパティの違いをご覧ください。

Get-Date コマンドのメソッドを確認してみましょう。

この中で注目していただきたいのは、

AddDays
AddHours
AddMilliseconds
AddMinutes
AddMonths
AddSeconds
AddTicks
AddYears

といった「Add○○」メソッドです。

これらのメソッドは○○に該当するパラメータを増やすもしくは減らすことができます。

つまり、

AddHours ⇒ 時間(Hours)を増やすまたは減らす

ということです。

例えば「1時間増やす」場合であれば、

.AddHours(1)

また、「2時間減らす」場合であれば

.AddHours(-2)

という風にメソッドの引数部分に増分を指定します。

実際にGet-Dateコマンドレットでメソッドを使ってみましょう。

このように Get-Date コマンドレットに対してメソッドを使用することで現在時刻を操作することができます。

上の実行結果で最後の3行部分を見るとゴヤゴチャとメソッドを繋げています。しかし、着目して欲しいのはその結果部分です。

「DateTime」

であることがわかります。

Set-Date コマンドレットは「System.DateTime」型のデータを使って時刻を設定するということを思い出してください。

上の Get-Date の結果が「DateTime」型なので、これを Set-Date に渡してあげることで時刻を設定することができるのです!

ということで早速実行してみましょう。

このように ”-Date” オプションでも Get-Date コマンドレットと組み合わせることで現在時刻からの調整が可能です。

まとめ

システムの日付・時刻を指定して変更する場合は

Set-Date -Date <指定日>

システムの日付・時刻を指定して調整する場合は

Set-Date -Adjust <調整内容>

Get-Dateコマンドレットと組み合わせる場合は

パターン① - 時刻を設定する
Set-Date -Date (Get-Date <各オプション>)
パターン② - 現在時刻から調整する
Set-Date -Date (Get-Date).Add○○(調整内容)

 

スポンサーリンク

-システム・サービス
-, , , ,

Copyright© 【チェシャわら】PowerShellとは、から学ぶ入門者の教科書-脱コマンドプロンプト- , 2018 AllRights Reserved Powered by micata2.