如何为.csv文件中列出的每台PC运行脚本?

时间:2015-07-06 13:08:16

标签: csv vbscript

我正在寻找帮助,能够使用VBScript对csv中列出的每台PC运行脚本。目前我们正在使用一个小脚本,我们在" Hey,Scripting Guy博客"它收集了有关PC到打印机关系的正确信息,但仅限于一台手动指定的PC。这是对我们正在努力实现的目标的细分:

  • 列出以CSV格式存储的个人电脑。

  • 运行下面列出的脚本以查询CSV中的值并针对该值运行脚本。

  • 根据文件中的值运行脚本后,转到CSV列表中的下一台PC。

    strComputer = "PC-13699"
    
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer")
    
    For Each objPrinter in colPrinters
    If objPrinter.Attributes And 64 Then 
    strPrinterType = "Local"
    Else
    strPrinterType = "Network"
    End If
    Wscript.Echo objPrinter.Name & " -- " & strPrinterType
    Next
    

我对VBS没有多少经验,所以我是这个语言的完全新手,所以如果我听起来很蠢,请耐心等待。感谢您的高级帮助!

1 个答案:

答案 0 :(得分:0)

假设您的CSV有一个名为ComputerName的字段用于计算机名称,您可以修改脚本like this

filename = "C:\path\to\your.csv"

Set csv = CreateObject("Scripting.FileSystemObject").GetFile(filename)

Set conn = CreateObject("ADODB.Connection")
Set rs   = CreateObject("ADODB.Recordset")

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=" & csv.ParentFolder.Path & ";" & _
          "Extended Properties=""text;HDR=YES;FMT=Delimited"""

rs.Open "SELECT * FROM [" & csv.Name & "]", conn

Do Until rs.EOF
  strComputer = rs.Fields("ComputerName").Value

  Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

  Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer")

  For Each objPrinter in colPrinters
    If objPrinter.Attributes And 64 Then 
      strPrinterType = "Local"
    Else
      strPrinterType = "Network"
    End If
    Wscript.Echo objPrinter.Name & " -- " & strPrinterType
  Next

  rs.MoveNext
Loop

rs.Close
conn.Close