PowerShell 无法直接启用/禁用屏幕保护程序或强制锁屏,但可通过注册表修改、.NET API 调用(如 LockWorkStation)或组策略实现:禁用屏保设 ScreenSaveActive=0,启用密码验证设 ScreenSaverIsSecure=1,立即锁屏调用 [System.Windows.Forms.SystemInformation]::LockWorkStation()。
powershell 本身不提供直接启用/禁用屏幕保护程序或强制锁屏的原生命令,但可通过修改注册表、调用系统 api 或配合组策略实现精细控制。关键在于区分“关闭屏保”“禁用屏保密码”“防止自动锁屏”和“立即锁屏”这四类常见需求,每种对应不同技术路径。
禁用或启用屏幕保护程序
屏幕保护程序的开关由注册表项 HKCU:\Control Panel\Desktop 下的 ScreenSaveActive 值控制:
- 禁用屏保(不启动任何屏保):
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name ScreenSaveActive -Value 0 - 启用屏保(允许用户设置并触发):
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name ScreenSaveActive -Value 1 - 同时建议设置等待时间(单位:秒),避免屏保立即触发:
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name ScreenSaveTimeOut -Value 600(即10分钟)
移除屏保密码验证
即使启用了屏保,“恢复时显示登录屏幕”是否生效,取决于密码保护是否开启。该选项对应注册表值 ScreenSaverIsSecure:
- 禁用屏保密码(恢复桌面无需输入密码):
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name ScreenSaverIsSecure -Value 0 - 启用屏保密码(恢复时强制登录):
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name ScreenSaverIsSecure -Value 1 - 注意:此设置仅影响屏保恢复环节,不影响 Windows 锁屏(Win+L)或睡眠唤醒逻辑
绕过屏保实现主动锁屏
若需在脚本中立即锁定工作站(等效于按 Win+L),PowerShell 可通过 .NET 调用系统 API:
- 执行锁屏命令(无需第三方工具):
Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SystemInformation]::LockWorkStation() - 也可使用 rundll32(兼容性更广):
rundll32.exe user32.dll,LockWorkStation - 该操作不依赖屏保状态,也不受电源设置影响,是真正意义上的即时锁屏
配合组策略统一管理(域环境)
在 Active Directory 环境中,推荐使用组策略替代逐台注册表修改,确保策略可审计、可回滚:
- 策略路径:用户配置 → 管理模板 → 控制面板 → 个性化 → 密码保护屏幕保护程序
- 设为“已禁用”,即可阻止用户在该 OU 下设置屏保密码
- 如需彻底禁用屏保功能,还可配置:屏幕保护程序 → 已禁用
- PowerShell 可辅助部署 GPO:
Set-GPRegistryValue -Name "MyPolicy" -Key "HKCU\Control Panel\Desktop" -ValueName "ScreenSaveActive" -Type DWord -Value 0


















