毎日のPCの稼働時間を自動で書き出したい。

PCのオンオフ管理は、社員の勤務実態の把握に活用されている方法です。設置難易度は高めですが、それぞれの作業は、思うほど難しくありません。順を追って記載しますので、お試しください。

▶ Step 1:保存フォルダを作る

  1. エクスプローラで C:\Logs フォルダを作成します(※任意の場所でOKですが、後で使うので覚えておいてください。

▶ Step 2:PowerShellスクリプト作成

  1. メモ帳を開きます
  2. 以下のスクリプトをコピー&貼り付け
$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

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

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