Solved

POwershell - How to pull the screen saver time out value

Posted on 2013-11-04
9
1,674 Views
Last Modified: 2013-11-15
Hi EE

I am trying to pull from multiple machines what the value is set for the screen saver .
I am testing with the line below on one machine only and its not showing the correct seconds .. The screen saver is set via policy for 15 mins and when I run the line below
it shows the ScreenSaverTimeout to 600 seconds .. I was thinking I should see 900 seconds .. any idea why ?

Get-WmiObject -ComputerName (get-content c:\temp\wks.txt) Win32_Desktop
0
Comment
Question by:MilesLogan
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 2
9 Comments
 
LVL 15

Expert Comment

by:Giovanni Heward
ID: 39622171
Here's a script you can use.

GetSetScreenSaverTimeOut.ps1

Param([switch]$debug, $value = 120)
Function Get-RegistryValue([ref]$in)
{
 Write-Debug $MyInvocation.MyCommand.name
 $in.value = (Get-ItemProperty -path $path -name $name).$name
} #end Get-RegistryValue

Function Set-RegistryValue($value)
{
 Write-Debug $MyInvocation.MyCommand.name
 Set-ItemProperty -Path $path -name $name -value $value
} #end Get-RegistryValue

Function Write-Feedback($in)
{
 Write-Debug $MyInvocation.MyCommand.name
 "The $name is set to $($in)"
} #end Write-Feedback

# *** Entry Point ***
if($debug) { $DebugPreference = "continue" }
$path = 'HKCU:\Control Panel\Desktop'
$name = 'ScreenSaveTimeOut'
$in = $null

Get-RegistryValue([ref]$in)
Write-Feedback($in)
Set-RegistryValue($value)
Get-RegistryValue([ref]$in)
Write-Feedback($in)

Open in new window


If the script is run with the –debug switch, the Write-Debug cmdlet will display additional information on the screen.
0
 
LVL 2

Author Comment

by:MilesLogan
ID: 39622181
Hi x66_x72_x65_x65 ..  where do I enter the machine(s) to check ?
0
 
LVL 15

Expert Comment

by:Giovanni Heward
ID: 39622190
As written, the script is designed to run locally.  You can deploy it via GPO.
0
Does Powershell have you tied up in knots?

Managing Active Directory does not always have to be complicated.  If you are spending more time trying instead of doing, then it's time to look at something else. For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why

 
LVL 40

Accepted Solution

by:
Subsun earned 500 total points
ID: 39622198
Try..
GC c:\temp\wks.txt | %{
$Computer = $_
	If (Test-Connection $Computer -Quiet){
		Try {
		Get-WmiObject -ComputerName $Computer Win32_Desktop -EA STOP | Select @{N="Computer";e={$Computer}},Name,ScreenSaverActive,ScreenSaverTimeout
		}
		Catch{
		$_.Exception.Message | Select @{N="Computer";e={$Computer}},@{N="Name";e={$_}},ScreenSaverActive,ScreenSaverTimeout
		}
	}
	Else{
	"" | Select @{N="Computer";e={$Computer}},@{N="Name";e={"Computer not reachable"}},ScreenSaverActive,ScreenSaverTimeout
	}
} | Select Computer,Name,ScreenSaverActive,ScreenSaverTimeout | Export-Csv c:\temp\Wksreport.csv -NTI

Open in new window

I am getting the correct results.. Did you check the computer and see if the values set is same as in the result?
0
 
LVL 2

Author Comment

by:MilesLogan
ID: 39622254
Hi subsun .. this is exactly what I was looking for but .. the Wksreport.csv report is showing
600 for the ScreenSaverTimeout .. I am logged in to that test machine and the screen saver is set to 15 min by the policy assigned to the AD group that the machine object is a member of .. why would I not see 900 in the report ?
0
 
LVL 40

Expert Comment

by:Subsun
ID: 39622283
Are you seeing it for the same user which GPO is applied? Is it reporting wring time for all computers?
0
 
LVL 2

Author Comment

by:MilesLogan
ID: 39622555
Hi Subsun ..  the GPO is working correct .. I logged in to a machine and see the correct time ( 15 mins ) but the report shows 10 mins .
0
 
LVL 40

Expert Comment

by:Subsun
ID: 39623822
I will test and let you know as soon as I can..
0
 
LVL 40

Expert Comment

by:Subsun
ID: 39651195
Today I got some time to test this.. If you are getting incorrect information with WMI. then probably the correct information is coming from registry..

HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveTimeOut

You can access the CURRENT_USER  key from remote computer but problem is it will give you the registry key values for the specific user which you use to run the script..

You can use the following code against any of the computer and see if you get the correct result..

$Server = "ServerA" 
$objReg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('currentuser',$Server)
$objRegKey= $objReg.OpenSubKey("Control Panel\Desktop")
$objRegKey.GetValue("ScreenSaveTimeOut")

Open in new window

0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This article outlines the process to identify and resolve account lockout in an Active Directory environment.
A recent project that involved parsing Tableau Desktop and Server log files to extract reusable user queries for use in other systems. I chose to use PowerShell to gather the data, and SharePoint to present it...
This tutorial will walk an individual through the steps necessary to configure their installation of BackupExec 2012 to use network shared disk space. Verify that the path to the shared storage is valid and that data can be written to that location:…
This tutorial will walk an individual through the steps necessary to join and promote the first Windows Server 2012 domain controller into an Active Directory environment running on Windows Server 2008. Determine the location of the FSMO roles by lo…

740 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question