Создание файла Excel в профиле пользователя (на рабочем столе) с помощью VBS - PullRequest
0 голосов
/ 07 июля 2011

(правка) - я смог разобраться, на случай, если кому-нибудь понадобится ...

Просто нужно добавить несколько строк:

dim WSHShell, DesktopPath, objFSO

set objFSO=CreateObject("Scripting.FileSystemObject")
Set WSHshell = CreateObject("WScript.Shell")
DesktopPath = WSHShell.SpecialFolders("Desktop")

strWorkBook = (DesktopPath) & "\" & WshNetwork.ComputerName & "_" & WshNetwork.UserName & "-hardware.xls"

Яуверен, что этот вопрос не будет проблемой для одного из вас, парней сценаристов.Я системный администратор, поэтому мои навыки написания сценариев не совсем хороши.

У меня есть скрипт vbs, который я взломал, чтобы провести инвентаризацию ПК пользователей, используя некоторые определенные критерии.

При выполнении сценарий в основном создает файл Excel, затем собираетнекоторая информация и пишет в этот файл.Моя проблема в том, что я должен указать путь для вывода xls, в настоящее время он сохраняет файл непосредственно на диск C: \.Для внутренних пользователей я только что сохранил файл с UNC-путем, но он мне нужен для внешних пользователей, которые могут не иметь доступа к сети.

Мне бы хотелось, чтобы путь автоматически задавался для профиля пользователя, как в сценарии bat, например:% UserProfile% \ Desktop \ somefolder

Я просто не знаком сЕсть ли простой способ сделать это?Вот сценарий, вы, вероятно, заметите некоторые дополнительные вещи там, игнорируйте это, это из предыдущей версии этого сценария.

TLDR - Как сделать путь автоматически установленным для пользователейРабочий стол (Win XP и 7)?

Как обычно, большое, большое спасибо за чтение и ответы!

Set WshNetwork = WScript.CreateObject("WScript.Network")

strComputer = "."

strWorkBook = "C:\" & WshNetwork.ComputerName & "_" & WshNetwork.UserName & "-hardware.xls"

' Create Excel Spreadsheet
strFileName = "C:\" & WshNetwork.ComputerName & "_" & WshNetwork.UserName & "-hardware.xls"
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add()
objWorkbook.SaveAs(strFileName)
objExcel.Quit
Set app = CreateObject("Excel.Application")
app.Workbooks.Open strWorkBook
Set wb = app.ActiveWorkbook
app.Visible = False
wb.Activate
Set ws = wb.Worksheets(1)
ws.Cells(1,1).Value = "System Name"
ws.Columns(1).ColumnWidth = 20

ws.Cells(1,2).Value = "Username"
ws.Columns(2).ColumnWidth = 30

ws.Cells(1,3).Value = "Main/Test System"
ws.Columns(3).ColumnWidth = 30

ws.Cells(1,4).Value = "Special Applications"
ws.Columns(4).ColumnWidth = 30

ws.Cells(1,5).Value = "Location of the system"
ws.Columns(5).ColumnWidth = 30

ws.Cells(1,6).Value = "Used by which department"
ws.Columns(6).ColumnWidth = 30

ws.Cells(1,7).Value = "if not DHCP / ip address"
ws.Columns(7).ColumnWidth = 30

ws.Cells(1,8).Value = "local admin rights"
ws.Columns(8).ColumnWidth = 30

ws.Cells(1,9).Value = "Operating System"
ws.Columns(9).ColumnWidth = 40

ws.Cells(1,10).Value = "Disk space available on hard drive"
ws.Columns(10).ColumnWidth = 20

ws.Cells(1,11).Value = "CPU"
ws.Columns(11).ColumnWidth = 30

ws.Cells(1,12).Value = "Total Memory"
ws.Columns(12).ColumnWidth = 20

ws.Cells(1,13).Value = "Manufacturer"
ws.Columns(13).ColumnWidth = 20

ws.Cells(1,14).Value = "Model"
ws.Columns(14).ColumnWidth = 20

ws.Cells(1,15).Value = "Serial Number"
ws.Columns(15).ColumnWidth = 30

ws.Rows(1).Font.Bold = True

' Get the serial number first to see if it already exists in the spreadsheet
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS",,48)
For Each objItem In colItems
strSerialNumber = "" & objItem.SerialNumber
Next
Set objWMIService = Nothing
Set colItems = Nothing

intRowToUse = -1
For intRowCount = 2 To ws.UsedRange.Rows.Count
      If Trim(strSerialNumber) = Trim(ws.Cells(intRowCount,5).Value) Then
            intRowToUse = intRowCount
      End If
Next
If intRowToUse = -1 Then
      intRowToUse = ws.UsedRange.Rows.Count + 1
End If

' Get Computer System Details
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)
For Each objItem In colItems
    ws.Cells(intRowToUse,1).Value = "" & objItem.Caption 
    ws.Cells(intRowToUse,2).Value = "" & objItem.UserName
    ws.Cells(intRowToUse,13).Value = "" & objItem.Manufacturer
    ws.Cells(intRowToUse,14).Value = "" & objItem.Model
Next
Set objWMIService = Nothing
Set colItems = Nothing
'
'Output the Serial Number
ws.Cells(intRowToUse,15).Value = strSerialNumber

'
' Get CPU Details
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor",,48)
For Each objItem In colItems
    ws.Cells(intRowToUse,11).Value = "" & objItem.Name 
Next
Set objWMIService = Nothing
Set colItems = Nothing
'
' Get C: free space
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DeviceID='c:'",,48)
For Each objItem In colItems
        ws.Cells(intRowToUse,10).Value = "" & FormatNumber(objItem.FreeSpace/1024/1024/1024,0) & "GB"
Next
Set objWMIService = Nothing
Set colItems = Nothing
'
' Get OS Details
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)
For Each objItem In colItems
    ws.Cells(intRowToUse,9).Value = "" & objItem.Caption
    ws.Cells(intRowToUse,12).Value = "" & FormatNumber(objItem.TotalVisibleMemorySize/1024/1024,0) & "GB"  
Next
Set objWMIService = Nothing
Set colItems = Nothing
'
' Get & Writeout current Date
'ws.Cells(intRowToUse,12).value = "" & Month(Now) & "-" & Day(Now) & "-" & Year(Now)

'Autofit all columns
app.ActiveSheet.Columns.EntireColumn.AutoFit
' Save Audit File
app.DisplayAlerts = False
'wb.Saved = True
wb.Close True
app.DisplayAlerts = False
app.quit

MsgBox "Done"
'=====================

1 Ответ

0 голосов
/ 27 июля 2011

Просто нужно добавить несколько строк

dim WSHShell, DesktopPath, objFSO

set objFSO=CreateObject("Scripting.FileSystemObject")
Set WSHshell = CreateObject("WScript.Shell")
DesktopPath = WSHShell.SpecialFolders("Desktop")

strWorkBook = (DesktopPath) & "\" & WshNetwork.ComputerName & "_" & WshNetwork.UserName & "-hardware.xls"
...