
PCのオンオフ管理は、社員の勤務実態の把握に活用されている方法です。設置難易度は高めですが、それぞれの作業は、思うほど難しくありません。順を追って記載しますので、お試しください。
▶ Step 1:保存フォルダを作る
- エクスプローラで
C:\Logsフォルダを作成します(※任意の場所でOKですが、後で使うので覚えておいてください。

▶ Step 2:PowerShellスクリプト作成
- メモ帳を開きます
- 以下のスクリプトをコピー&貼り付け
$log="C:\Logs"
if(-not (Test-Path $log)){ New-Item -ItemType Directory -Path $log | Out-Null }
$today=Get-Date
$file=Join-Path $log ($today.ToString("yyyy-MM") + "_worklog.csv")
if(-not (Test-Path $file)){ "Date,Start,End,Duration" | Out-File -FilePath $file -Encoding UTF8 }
$yesterday=$today.AddDays(-1).Date
$entries=Get-EventLog System -After $yesterday -Before $yesterday.AddDays(1) |
Where-Object { $_.EventID -in 6005,6006 } |
Sort-Object TimeGenerated
$boot=$entries | Where-Object { $_.EventID -eq 6005 } | Select-Object -First 1
$shutdown=$entries | Where-Object { $_.EventID -eq 6006 } | Select-Object -Last 1
if($boot -and $shutdown){
$d=$yesterday.ToString("yyyy-MM-dd")
$s=$boot.TimeGenerated.ToString("HH:mm:ss")
$e=$shutdown.TimeGenerated.ToString("HH:mm:ss")
$dur=($shutdown.TimeGenerated - $boot.TimeGenerated).ToString("hh\:mm\:ss")
if(-not (Select-String -Path $file -Pattern "^$d,")) {
"$d,$s,$e,$dur" | Add-Content -Path $file -Encoding UTF8
}
}
「名前を付けて保存」で、次のように保存:
- ファイルの種類:すべてのファイル
- ファイル名:
SaveLog.ps1 - 保存場所:
C:\Logs
「タスクスケジューラ」起動
Windowsキー+R を押す(「ファイル名を指定して実行」)下記を入力し、Enter。
taskschd.msc

▶ 2. 右側メニュー「基本タスクの作成」をクリック
●名前 PCログ記録タスク(など分かりやすい名前)
●説明(任意) 起動とシャットダウンのログをCSVに保存する

▶ 4. トリガー(いつ実行するか)
- 「毎日」を選択
- 時刻:19:00 など、退勤後などお好きな時間でOK

▶ 5. 操作(何を実行するか)
- 「プログラムの開始」を選択


▶ 6. プログラムと引数を入力
プログラム/スクリプト powershell.exe
引数の追加(オプション)
-ExecutionPolicy Bypass -File "C:\Logs\SaveLog.ps1"
近い時間に設定し試験運行
フォルダにファイルが出来て居たら成功です。

実際に実行する時間に修正しましょう。
設定した名前をダブルクリックして修整画面を表示。

▼「トリガー」を選択し編集する項目をダブルクリックします。

▶ 直接実行方法(手動テスト)
①スタート → 「PowerShell」と入力して、「Windows PowerShell」右クリック → 管理者として実行

②以下を入力して実行:
Set-ExecutionPolicy RemoteSigned

キーボードで Y を押して Enter を押すことで実行が許可されます。
PS C:\Windows\system32> cd C:\Logs
PS C:\Logs> .\SaveLog.ps1


完了したらフォルダを確認してください。
上手く行きましたでしょうか?

メモ帳でプログラミングできるところが、一般の方も使える技と言えそうです。
