LoginSignup
1
3

More than 5 years have passed since last update.

PowerShellでスクリーンセーバーが有効になってるか確認する

Last updated at Posted at 2015-09-23

スクリーンセーバーの設定が有効になってるか、復帰時にパスワード入力が必須になってるかチェックする処理をPowerShellで書いたので貼っておきます。

スクリーンセーバーの設定はWMI経由で root/CIMV2Win32_Desktop から取得できます。
ポイントとしてデスクトップの設定はユーザごとにプロファイルが分かれてるので、現在ログイン中のユーザ設定を取得して絞込をします。

function SubCheck-ScreenSaver($sleepThresholdSec){
    # スクリーンセーバーの設定はユーザプロファイル単位に存在するので、現在ログイン中のユーザの設定を取得する
    $computername = $env:computername
    $username =  $env:username
    $desktop = Get-WmiObject -Namespace "root/CIMV2" -Query "SELECT * FROM Win32_Desktop WHERE Name = ""$computername\\$username"""
    # スクリーンセーバのプログラム
    # (なし)= 
    # 3Dテキスト = C:\Windows\system32\ssText3d.scr
    # バブル = C:\Windows\system32\Bubbles.scr
    # ブランク = C:\Windows\system32\scrnsave.scr
    # ラインアート = C:\Windows\system32\Mystify.scr
    # リボン = C:\Windows\system32\Ribbons.scr
    # 写真 = C:\Windows\system32\PhotoScreensaver.scr
    $screenSaver = @{}
    $screenSaver["ScreenSaverExecutable"] = $desktop.ScreenSaverExecutable
    # 待ち時間(秒)
    $screenSaver["ScreenSaverTimeout"] = $desktop.ScreenSaverTimeout
    # 再開時にログオン画面に戻る(=復帰時のパスワード入力を必須にする)
    $screenSaver["ScreenSaverSecure"] = $desktop.ScreenSaverSecure

    # チェック判定
    if (($screenSaver["ScreenSaverExecutable"] -ne $null) -and
        ($screenSaver["ScreenSaverTimeout"] -le $sleepThresholdSec) -and
        ($screenSaver["ScreenSaverSecure"] -eq $True)) {
        $screenSaver["ScreenSaverCheckStatus"] = "OK"
    } else {
        $screenSaver["ScreenSaverCheckStatus"] = "NG"
    }
    return $screenSaver
}
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3