How to shut down all PCs on a network at a specific time, with a few exceptions.

Posted on 2008-06-17
Last Modified: 2012-05-05
I have a need to power down all PCs on the network (across two physical sites) that are still on after 10pm nightly.
There are about 40 PCs (out of 500+) that need to be kept on to run overnight processes or for remote connection for troubleshooting issues.

We have Windows Server 2000 and Windows Server 2003 for most of our servers. We also have Altiris for remote software deployment and remote control purposes.

How would I use either of these systems (Windows Server or Altiris) to power down the PCs, with some exclusions??
Question by:Rartemass

Accepted Solution

amritgill earned 150 total points
ID: 21810244
If you have configuration manger you can issue a shutdown command.

Also no policy, but this might do it:

It is a tool that lets you perform actions per OU - such as mass group policy update, mass shutdown, etc.
LVL 18

Author Comment

ID: 21810264
I'll check if we have config manager. I wasn' t involved with setting up the servers so unsure on what is installed.
I will investigate the specops software too. Quick question, does this software know when a PC is already powered down and skip it; or does it power it on to turn if back off?
LVL 23

Assisted Solution

debuggerau earned 100 total points
ID: 21810357
this is the script I use:

Const HKEY_CURRENT_USER = &H80000001

Const HKEY_LOCAL_MACHINE = &H80000002

Set objFSO = CreateObject("Scripting.FileSystemObject")

strComputer = "."

On Error Resume Next

Set objOU = GetObject("LDAP://CN=Computers,dc=<yourdomainname>,dc=local")

objOU.Filter = Array("Computer")

Dim iNum

For Each objComputer in objOU

    iNum = 0

    If objComputer.CN = "<Excluded machine name here>" Then iNum = 1

    If iNum = 0 then

	    strComputer = objComputer.CN

	    Set objShell = CreateObject("WScript.Shell")

	    strCommand = "%comspec% /c ping -n 3 -w 1000 " & strComputer & ""

	    Set objExecObject = objShell.Exec(strCommand)

	    Do While Not objExecObject.StdOut.AtEndOfStream

        	strText = objExecObject.StdOut.ReadAll()

	        If Instr(strText, "Reply") > 0 Then

		    Set objTextFile = objFSO.CreateTextFile(strComputer & ".tsv", True)

		    objTextFile.WriteLine "Machine Name" & vbtab & strComputer

	            'Set objComputer = GetObject("WinNT://" & strComputer & "")

	            'objComputer.Filter = Array("User")

	            'For Each objUser in objComputer

	            '    Wscript.Echo strComputer & "  " & objUser.Name


		    'Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _

		    'strComputer & "\root\default:StdRegProv")

			    'strKeyPath = "SOFTWARE\Classes\exefile\shell\open\command\"

		    'strValueName = ""

		    'oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue


		    'objTextFile.WriteLine "exefile: " & strValue & vbtab


		    strCommand = "%comspec% /c shutdown -s -m \\" & strComputer & " -t 1 -f "

		    Set objExecObject = objShell.Exec(strCommand)


	            'Wscript.Echo strComputer & " could not be reached."

	        End If


    End if


Open in new window

LVL 18

Author Comment

ID: 21810387
Thanks debuggerau.
I'll check that script out too.

Will get back to you both.
LVL 70

Expert Comment

ID: 21810687
A simple batch script will also to the job eg

shutdown /s /t:10 /m Computer001
shutdown /s /t:10 /m Computer002
shutdown /s /t:10 /m Computer003
shutdown /s /t:10 /m Computer999

Create the above as a text file, save it with the .bat extention and use task scheduler to tun it at the desired time
LVL 18

Author Closing Comment

ID: 31468230
Thanks for your help.
The two methods awarded points have been tested and appear to work fine.

Join & Write a Comment

Resolve DNS query failed errors for Exchange
In this article, we will see the basic design consideration while designing a Multi-tenant web application in a simple manner. Though, many frameworks are available in the market to develop a multi - tenant application, but do they provide data, cod…
This tutorial will walk an individual through the process of transferring the five major, necessary Active Directory Roles, commonly referred to as the FSMO roles to another domain controller. Log onto the new domain controller with a user account t…
This tutorial will walk an individual through the process of configuring their Windows Server 2012 domain controller to synchronize its time with a trusted, external resource. Use Google, Bing, or other preferred search engine to locate trusted NTP …

744 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

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now