【PowerShell】自動画面ロックを回避するスクリプト

PowerShell Windows

初めに

私の会社のPCはWindowsであり、一定時間操作がないと、自動的に画面がロックされてしまいます。
セキュリティ的にはそれで問題ないのですが、あるPCで別のPCの画面を見ながら操作する際にはこの仕様が非常にストレスになることがあります。

そこで、自動画面ロックを回避するスクリプトを作成したため、下記にて紹介します。

自動画面ロックを回避するスクリプト

前提

会社のPCで自動画面ロックの回避を実現するためには以下の条件を満たす必要がありました。

  1. 許可なくソフトウェアを追加することができないため、デフォルトの環境で動作する
  2. Cドライブにエクスプローラーでアクセスしない
  3. 可能であればコンソールは非表示でスクリプト実行される

単純に考えると、VBScriptで作成したファイルをwscript.exeで関連付けて実行すれば良いのですが、前提2.のとおり、セキュリティの関係上、Cドライブにエクスプローラーでアクセスできないため、関連付けができませんでした。

そこでPowerShellとVBScriptを組み合わせて実現することとしました。

スクリプト

[VBScript]

Set objShell = WScript.CreateObject("WScript.Shell")
Do
' ①入力間隔
WScript.Sleep 60000*3
' ②F15キーの送信
objShell.SendKeys "{F15}"
Loop

[PowerShell]

# 実行ポリシーの変更
Set-ExecutionPolicy RemoteSigned -Scope Process -Force
# VBScriptの実行
Start-Process -FilePath "wscript.exe" -ArgumentList "★作成したVBScriptのフルパス★"

動作仕様

作成したVBScriptをPowerShellから起動するようにしています。

VBScriptは3分(60000ミリ秒*3)に1回、「F15」キーを送信します。
基本的にはキーボードにF15のキーは存在せず、動作の割り当てもないため、スクリプトを実行しても影響のないキーとして想定しています。

PowerShellのArgumentListの引数には自身の環境に応じて、作成したVBScriptのフルパスを指定します。

最後に

これで自動画面ロックを回避することができました。
もちろん、セキュリティの観点から、PCの前から離席する際は、[Windows キー]+[L]で自分で画面をロックすることを忘れないようにしています。

コメント