Automated Logoff Remote PC's in batch or vbscript

I have about 50 PC's that I need to logoff the users in order to perform a backup of their profiles. I have a TXT file that contains OS - IP - Computername (WIN_7 - 10.10.10.10 - MYPC) in that format. I'm still in the process of learning VB and batch scripts. I need to be able to log off the remote PC's before launching the backup so I can get a clean backup of their PST files.  I'm looking for either VB or batch file to

1) Read the txt file to populate "computername" variable
2) pass the variable to process to logoff the remote PC
3) Loop until EOF


I have tried successfully with psshutdown with my XP systems, but this command seems to not work with Windows 7 computers. I can use shutdown to restart the computer, but I would rather just log the user off.
Can someone help me with some code to make this happen.
rraymond1130Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Lionel MMConnect With a Mentor Small Business IT ConsultantCommented:
You can just as easy use a batch file to create a one-time or a daily scheduled task. You can run this from any system  and setup a scheduled task on a  remote system.
http://www.robvanderwoude.com/schtasks.php (see options and examples)

 for /F "skip=1 tokens=1 delims=," %%i in (C:\Utils\PC-Names.Txt) do SCHTASKS /Create /S %%i /U username /P password /SC once /TN Logoff PCs /ST time SD Start date /TR C:\Windows\System32\shutdown.exe -l

This will run once so you can run the batch file whenever or you can run this once and setup the scheduled task to run wherever you want it to.k
0
 
ZabagaRConnect With a Mentor Commented:
I just tried this and it worked for me.  I auto-logged off 3 remote machines.
My text file of computers is c:\servers.txt (change to your liking below).
You need to edit the username & password too so you have the right credentials in your domain/workgroup to do it.

mytest.vbs
-----------------------------------------------------------------

Const ForReading = 1
sUser = "username"
sPassword = "password"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile _
    ("c:\servers.txt", ForReading)

Do Until objTextFile.AtEndOfStream
    strNextLine = objTextFile.Readline
    arrServiceList = Split(strNextLine , ",")
    sClient= arrServiceList(0)
 Set oLocator = CreateObject("WbemScripting.SWbemLocator")
 On error resume next
 Set oConnection = oLocator.ConnectServer(sClient, _
   "root\cimv2", sUser, sPassword)
 Set oWindows = oConnection.ExecQuery("Select " & _
   "Name From Win32_OperatingSystem")
 For Each oSys In oWindows
   oSys.Win32ShutDown(4)
 Next
Loop
ObjTS.Close
0
 
ZabagaRCommented:
forgot to say : my text file c:\servers.txt just had a list of IP addresses of the machine's I wanted to log off. Is that okay?
0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
Lionel MMSmall Business IT ConsultantCommented:
If you goal is to copy their profiles then if you only do a logoff some of the files will not be copied and will show up as in use. As such you will be better served with doing a reboot. All you will need is a list of all your PC names (system names--works on servers too) and then run this
for /F "skip=1 tokens=1 delims=," %%i in (C:\Utils\PC-Names.Txt) do shutdown -f -r -t 240 -m %%i
As long as the user that runs this has the required privileges this is all that is needed. I run this from my server once a week (for a different reason) and it works--has for years. This will cause a reboot in 2 minutes (-t 240) if you want it to happen immediately change that to -t 0. You can also add -c "and any comment you want to show up on their pc" (enclose in quotes).
0
 
rraymond1130Author Commented:
ZabagaR I tried you code this morning on a workstation running Windows 7 64Bit. It doesn't log off the computer. I have several Win 7 64bit systems. I will run this test on a Win XP system which we have a majority of.

 Lionelmm thanks for your input. Ultimately I would like to just logoff the user. But if I can't get ZabagaR's solution to work I may have to go your route. I will check back later.
0
 
ZabagaRCommented:
Do the credentials you're using apply to the Windows 7 64-bit machine(s)?
I tested with three Windows 2008 64-bit servers, running the command from my desktop PC. I think as long as you have the proper rights on those systems it will log you off.
0
 
rraymond1130Author Commented:
OK Update ZaBagaR your code worked logging off a Windows XP workstation but not a Windows 7 64bit workstations. If there is something that has to be tweaked to make it work with Windows 7 64bit systems that will be a great help.

Lionelmm your code works with both XP and 7, I figured out that you had to add \\ to the system name or IP Address for your code to work. I ultimately would like to Logoff the systems not restart them. The restart code would help to restart the systems once a week, but restarting them every night to run a backup is a little much.
0
 
rraymond1130Author Commented:
Lionelmm Your above solution works Windows 7 64bit computers but I get access denied running it on a Windows XP PC and I'm using the domain admin information.
0
 
rraymond1130Author Commented:
I'm even running this from a CMD prompt with elevated privileges and still access denied on WinXP. Windows 7 64bit goes straight through. This is crazy..
0
 
Lionel MMSmall Business IT ConsultantCommented:
try /ru and /rp on XP instead of /u  and /p. and try using /U Domain-Name\username instead of just /U username
0
 
Lionel MMSmall Business IT ConsultantCommented:
this shows you that these commands should work on XP--these are for XP options
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/schtasks.mspx?mfr=true
0
 
rraymond1130Author Commented:
Ok, I'm going to have to split this one because I was able to use both solutions. Thanks for the help guys.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.