CollapseAll image

Remote Screen Blanking

note-icon Note:

Remote Screen Blanking was implemented in Intel AMT Version 10.0.

When remotely performing maintenance on a client system, it can sometimes be necessary to ensure that the maintenance is not visible to people in the vicinity of the system. This is particularly true for sensitive maintenance conducted on systems located in public, such as ATMs.

The Remote Screen Blanking feature is designed to address this need. It disables the client system’s display while maintenance is being performed, and offers a setting that allows the screen blanking to remain active across up to three reboots.

Enabling Remote Screen Blanking requires that AMT 10.0 or later be installed and that User Consent be disabled.

Click here for a PowerShell code snippet that verifies the Remote Screen Blanking prerequisites

#Check the AMT version; Need AMT 10 or greater for Remote Screen Blanking

Write-Host"AMT version is: "  $(GetCoreVersion)

 

#Check if User Consent is required; Remote Screen Blanking will not operate when User Consent is required

$optInServiceRef =$wsmanConnectionObject.NewReference("SELECT * FROM IPS_OptInService WHERE Name='Intel(r) AMT OptIn Service'")

$optInServiceInstance =$optInServiceRef.Get()

$optInRequired =$optInServiceInstance.GetProperty("OptInRequired")

Write-Host"User Consent Required: "  $OptInRequired

 

 

The IPS_ScreenConfigurationService class contains an EnabledState property through which you can enable or disable Remote Screen Blanking. The feature must be made available by the firmware installed on the client system, or an Internal Processing error will occur.

Click here for a PowerShell code snippet that reports the current state of Screen Blanking, enabling it if necessary

 

#Read the configuration settings for Remote Screen Blanking which are in the class IPS_ScreenConfigurationService

$screenPropRef =$wsmanConnectionObject.NewReference("SELECT * FROM IPS_ScreenConfigurationService")

$screenPropInstance =$screenPropRef.Get()

#Check if Remote Screen Blanking is enabled; If it is not, then set it to enabled

$enabledState =$screenPropInstance.GetProperty("EnabledState")

Write-Host"Enabled state: "  $enabledState

If ($enabledState -eq "0")

{

    Write-Host"Remote Screen Blanking was not enabled, so enabling it now"

    $screenPropInstance.SetProperty("EnabledState","1")

    $screenPropRef.Put($screenPropInstance)

}

#Check if the screen is currently being blanked

$screenState =$screenPropInstance.GetProperty("CurrentState")

Write-Host"Screen state is (0=Not Blanked, 1=Blanked): "  $screenState

#Check how many reboots can occur while maintaining an actively blanked screen

$rebootsRemaining =$screenPropInstance.GetProperty("RemainingConsecutiveRebootsNum")

Write-Host"Remaining reboots: "  $rebootsRemaining

 

 

Once all of the above prerequisites have been fulfilled, you can then use the SetSessionState method in the same class to begin screen blanking, even if the client system has crashed. Screen blanking will end if it is disabled using the EnabledState property or exited using the SetSessionState method; if the computer is rebooted when the value of RemainingConsecutiveRebootsNum is 0; if User Consent is enabled; or if AMT is unprovisioned or unconfigured.

Click here for a PowerShell code snippet demonstrating how to activate and deactivate Screen Blanking

########## Blank the screen, pause, then un-blank the screen ##########

 

#Start blanking the screen with 2 reboots allowed, wait for 30 seconds, then stop blanking

$screenPropRef =$wsmanConnectionObject.NewReference("SELECT * FROM IPS_ScreenConfigurationService")

$screenPropInstance =$screenPropRef.Get()

$inputObject =$screenPropRef.CreateMethodInput("SetSessionState")

$inputObject.SetProperty("SessionState","1")

$inputObject.SetProperty("ConsecutiveRebootsNum","2")

$outputObject =$screenPropRef.InvokeMethod($inputObject)

$returnValue =$outputObject.GetProperty("ReturnValue")

Write-Host"Blank the screen. Return (0 = success):   "  $returnValue

Start-Sleep-s 20

$inputObject.SetProperty("SessionState","0")

$inputObject.SetProperty("ConsecutiveRebootsNum","0")

$outputObject =$screenPropRef.InvokeMethod($inputObject)

$returnValue =$outputObject.GetProperty("ReturnValue")

Write-Host"Stop blanking the screen. Return (0 = success): "  $returnValue

 

Remote Screen Blanking has been implemented in the KVMControlApplication tool, and is demonstrated as part of the included Integrated Viewer Application sample. See Setting up the Integrated Viewer Application.

Copyright © 2006-2022, Intel Corporation. All rights reserved.