Solved

Modify VBS Script to Write CVS file to a Share

Posted on 2009-04-08
5
300 Views
Last Modified: 2013-11-25
Attention Experts,

I have a .vbs file that, when executed,  generates a .csv file on the same drive/folder from which the the .vbs file was ran.
Example: The .vbs file is on the desktop. I execute the .vbs file, and a .csv file appears on the desktop.

Now, I need the outputted .csv file to be written to a network share, when the .vbs file is executed.
Example: The .vbs file is on the desktop. I execute the .vbs file, and a .csv file appears on a specified shared folder <that the user has 'write' access to, of course>.

Thanks in advance!



Set oNet   = CreateObject("Wscript.Network")
set oFSO   = CreateObject("Scripting.FileSystemObject")
strComputer = "."
UserName = oNet.UserName
Set objOutputFile = oFSO.CreateTextFile(Username+".csv",True)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colDrives = objWMIService.ExecQuery _
    ("Select * From Win32_LogicalDisk Where DriveType = 4")
 
 
'************
'get username and create row 1 with username
'************
   objOutputFile.WriteLine(Username & ",")
   'wscript.echo(UserName)
 
'************
'get drive letter and create row 2 with Drive letters
'************
For Each objDrive in colDrives
    'Wscript.Echo "Drive letter: " & objDrive.DeviceID
    objOutputFile.Write(objDrive.DeviceID & ",")
Next
 
'***********
'End Row 2
'***********
objOutputFile.WriteLine(" ")
 
'***********
'Get UNC and create column 3 under the corresponding drive letter
'***********
 
For Each objDrive in colDrives
    'Wscript.Echo "Network path: " & objDrive.ProviderName
    objOutputFile.Write(objDrive.ProviderName & ",")
Next

Open in new window

0
Comment
Question by:paydfody
[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
  • 3
  • 2
5 Comments
 
LVL 15

Accepted Solution

by:
oobayly earned 250 total points
ID: 24099429
As long as the user executing the script has permission to access the share, I don't see why you need to win management code.

Surely you just have to write the csv file a path like this, assuming you're using the FileSystemObject & a TextStream
Dim filesys, testfile
Dim outputFile
outputFile = "\\remote_computer_name\shared_folder\something.csv"
Set filesys = CreateObject("Scripting.FileSystemObject")
Set testfile= filesys.CreateTextFile(outputFile , True)
 
' generate csv data
 
testfile.Close 

Open in new window

0
 

Author Comment

by:paydfody
ID: 24100053
oobayly,

That did not work. I'm not even sure how to add your mod to my code. Thanks, anyway.
0
 
LVL 15

Expert Comment

by:oobayly
ID: 24100457
Well, what does your code look like. It has to have somewhere the name of the file that is created. The fact that the file is created on the Desktop when you execute the script on the Desktop implies that the file name the csv file is given something like "data.csv", all you should have to do is change it an absolute path, ie: "\\remote_computer_name\shared_folder\data.csv"
0
 

Author Comment

by:paydfody
ID: 24100522
My original code is posted, in the 'code snippet' section, directly under the question. I have been tweaking around with it, but I still haven't gotten it to write exactly where I want it. Anyways, the code is below (thanks):


Set oNet   = CreateObject("Wscript.Network")
set oFSO   = CreateObject("Scripting.FileSystemObject")
strComputer = "."
UserName = oNet.UserName
Set objOutputFile = oFSO.CreateTextFile(Username+".csv",True)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colDrives = objWMIService.ExecQuery _
    ("Select * From Win32_LogicalDisk Where DriveType = 4")
 
 
'************
'get username and create row 1 with username
'************
   objOutputFile.WriteLine(Username & ",")
   'wscript.echo(UserName)
 
'************
'get drive letter and create row 2 with Drive letters
'************
For Each objDrive in colDrives
    'Wscript.Echo "Drive letter: " & objDrive.DeviceID
    objOutputFile.Write(objDrive.DeviceID & ",")
Next
 
'***********
'End Row 2
'***********
objOutputFile.WriteLine(" ")
 
'***********
'Get UNC and create column 3 under the corresponding drive letter
'***********
 
For Each objDrive in colDrives
    'Wscript.Echo "Network path: " & objDrive.ProviderName
    objOutputFile.Write(objDrive.ProviderName & ",")
Next
0
 

Author Comment

by:paydfody
ID: 24100706
oobayly,

Good news. I've finally tweaked this thing like i need it. I appreciate the your thought-provoking ideas. Therefore, I am awarding you the 250 points.

Thanks again.
0

Featured Post

Connect further...control easier

With the ATEN CE624, you can now enjoy a high-quality visual experience powered by HDBaseT technology and the convenience of a single Cat6 cable to transmit uncompressed video with zero latency and multi-streaming for dual-view applications where remote access is required.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
asp.net figure out error 3 45
SQL Server Serialization error 8 44
Can Selenium do Load Testing? 2 59
CSS styling problem 3 26
A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…

737 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