Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Remotely Obtain Serial Numbers For Multiple PCs At Once?

Posted on 2007-03-27
8
Medium Priority
?
232 Views
Last Modified: 2011-02-11
I located a vbs script some time ago were I get remotely obtain a machines serial number.

On Error Resume Next
Dim System
if Wscript.Arguments.Count >0 then
sSystem=Wscript.Arguments(0)
end if
ComputerName = InputBox("Enter the name of the computer you wish to query")
winmgmt1 = "winmgmts:{impersonationLevel=impersonate}!//"& ComputerName &""
Set SNSet = GetObject( winmgmt1 ).InstancesOf ("Win32_BIOS")
for each SN in SNSet
MsgBox "The serial number for the specified computer is: " & SN.SerialNumber
Next


pause



 Works fine on most pcs.  What I would like to do however is instead of checking 1 by one, I would like to check multiple pcs at once.  Does anyone know how I can do this?

Thanks

0
Comment
Question by:master_windu
[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
  • 5
  • 3
8 Comments
 
LVL 43

Expert Comment

by:Steve Knight
ID: 18802851
You could make it work down a text file.  This could be done just in VBS (sirbounty will no doubt help you with that here shortly as...) or you can use a batch file to call your VB script, e.g.

@echo off
REM Save as SerialNums.cmd
set source=complist.txt
set dest=serials.txt
echo ------------%DATE%  %TIME-------------->>%dest%
if not exist "%source%" then echo Unable to find computer list & goto end
for /f "tokens=1" %%a in (complist.txt) do cscript sernum.vbs %%a >> serials.txt
:end

REM sernum.vbs
On Error Resume Next
Dim ComputerName
if Wscript.Arguments.Count >0 then
   ComputerName=Wscript.Arguments(0)
else
   ComputerName = InputBox("Enter the name of the computer you wish to query")
end if
winmgmt1 = "winmgmts:{impersonationLevel=impersonate}!//"& ComputerName &""
Set SNSet = GetObject( winmgmt1 ).InstancesOf ("Win32_BIOS")
for each SN in SNSet
    wscript.echo ComputerName,SN.SerialNumber
Next
0
 
LVL 43

Expert Comment

by:Steve Knight
ID: 18802857
That works down a list in complist.txt, one per line of all your computers.
0
 

Author Comment

by:master_windu
ID: 18804387
thanks

I must be doing something wrong

I created the complist.txt file and placed it in the same dir as the .cmd and vbs file

when I run serialnums.cmd, the cmd window appears with todays date and the word "dest"
the serials.txt file is generated but it only reads.....

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 43

Accepted Solution

by:
Steve Knight earned 2000 total points
ID: 18806376
OK, sorry made a typo in the entry for %time% as %time caused one of the issues here.  Try this:

@echo off
REM Save as SerialNums.cmd
set source=complist.txt
set dest=serials.txt
echo ------------%DATE%  %TIME%-------------->>%dest%
if not exist "%source%" then echo Unable to find computer list & goto end
for /f "tokens=1" %%a in (%source%) do cscript //nologo sernum.vbs %%a >> %DEST%
:end
start %dest%

REM sernum.vbs
On Error Resume Next
Dim ComputerName
if Wscript.Arguments.Count >0 then
   ComputerName=Wscript.Arguments(0)
else
   ComputerName = InputBox("Enter the name of the computer you wish to query")
end if
winmgmt1 = "winmgmts:{impersonationLevel=impersonate}!//"& ComputerName &""
Set SNSet = GetObject( winmgmt1 ).InstancesOf ("Win32_BIOS")
for each SN in SNSet
    wscript.echo ComputerName,SN.SerialNumber
Next
0
 

Author Comment

by:master_windu
ID: 18809847
Thanks. works great as long as i use ip addesses in the complist.txt file.

any way i can use machine names?
0
 
LVL 43

Expert Comment

by:Steve Knight
ID: 18811852
Can your computer resolve the names when you PING them for starters I suppose?  You might have to add them to the file fully qualified, i.e. name.domain.com?
0
 

Author Comment

by:master_windu
ID: 18812192
all is well.  I went back and tried some more machine names and I was able  to get back a serial without the fqdm.

Thanks
0
 
LVL 43

Expert Comment

by:Steve Knight
ID: 18812266
No problem, glad to help!

Steve
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

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

Question has a verified solution.

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

This article is meant to give a basic understanding of how to use R Sweave as a way to merge LaTeX and R code seamlessly into one presentable document.
A quick Powershell script I wrote to find old program installations and check versions of a specific file across the network.
Learn the basics of lists in Python. Lists, as their name suggests, are a means for ordering and storing values. : Lists are declared using brackets; for example: t = [1, 2, 3]: Lists may contain a mix of data types; for example: t = ['string', 1, T…
The viewer will learn how to count occurrences of each item in an array.
Suggested Courses

618 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