Есть ли способ сказать этому сценарию не включать заголовки в следующие позиции? - PullRequest
0 голосов
/ 18 января 2020

У меня есть скрипт, который позволяет мне получать определенную информацию о машине, когда пользователь запускает скрипт, и результат записывается в текстовый файл на общем сервере. Сценарий работает нормально ... однако я бы хотел, чтобы он не повторял заголовки, когда следующий пользователь запускает сценарий. Я искал по форумам, но не смог найти ничего, что позволило бы мне выполнить это. Извиняюсь, если мой язык скучный. Я уверен, что это что-то довольно легко, и был бы признателен, если бы кто-нибудь дал мне несколько советов. Я не программист, но я очень увлечен написанием сценариев, которые облегчают мою работу.

В настоящее время так выглядит результат.

User Name, Host Name, Manufacturer, Serial Number, Operating System, Model  
CA\username, NAPHX-C63E90K-L, LENOVO, PC63E90K, Microsoft Windows 7 Enterprise   6.1.7601, 20AMS1UD00  
User Name, Host Name, Manufacturer, Serial Number, Operating System, Model  
CA\username, USAPHX-6GL4R7-L, LENOVO, PC6GL4R7, Microsoft Windows 10 Enterprise  10.0.17134, 20FMS3XC00  
User Name, Host Name, Manufacturer, Serial Number, Operating System, Model  
CA\username, USAPHX-6KTBAY-L, LENOVO, PC6KTBAY, Microsoft Windows 10 Enterprise  10.0.17134, 20EQS2NM00  
User Name, Host Name, Manufacturer, Serial Number, Operating System, Model  
CA\username, MEXMEC-6Z0A6U-L, LENOVO, PC6Z0A6U, Microsoft Windows 10 Enterprise  10.0.17763, 20L8S6G20E

Я хочу, чтобы это выглядело так.

User Name, Host Name, Manufacturer, Serial Number, Operating System, Model  
CA\username, NAPHX-C63E90K-L, LENOVO, PC63E90K, Microsoft Windows 7 Enterprise   6.1.7601, 20AMS1UD00  
CA\username, USAPHX-6GL4R7-L, LENOVO, PC6GL4R7, Microsoft Windows 10 Enterprise  10.0.17134, 20FMS3XC00   
CA\username, USAPHX-6KTBAY-L, LENOVO, PC6KTBAY, Microsoft Windows 10 Enterprise  10.0.17134, 20EQS2NM00  
CA\username, MEXMEC-6Z0A6U-L, LENOVO, PC6Z0A6U, Microsoft Windows 10 Enterprise  10.0.17763, 20L8S6G20E

Вот пример моего текущего сценария.

' On Error Resume Next

' Constants for FileSystemObject
Const FOR_READING = 1
Const FOR_WRITING = 2
Const FOR_APPENDING = 8

strFileOutput = "\\servershare\folder\info.txt"

' Create a Script Runtime FileSystemObject.
Set objFSO = CreateObject("Scripting.FileSystemObject")

' Check to see if the output file exists. If so, open it for writing or appending.
' If not, create it and open it for writing.

If objFSO.FileExists(strFileOutput) Then
  Set objOutputFile = objFSO.OpenTextFile (strFileOutput, FOR_APPENDING)
Else
  Set objOutputFile = objFSO.CreateTextFile(strFileOutput)
End If

If Err <> 0 Then
  Wscript.Echo "Unable to open " & strFileOutput & " for output."
  WScript.Quit
End If

'Create Headers for Host, Manufacturer, Serial Number
objOutputFile.Writeline "User Name, Host Name, Manufacturer, Serial Number, Operating System, Model"

strComputer = "."

    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colSettings = objWMIService.ExecQuery ("Select * from Win32_ComputerSystem")
        For Each objComputer in colSettings
        PCMfg = objComputer.Manufacturer
        PCName = objComputer.Name
        UserName = objComputer.UserName
        'Wscript.Echo "User: " & Manufacturer: " & PCMfg & VbCrLf & "PC Name: " & PCName
        NEXT

    Set colBIOS = objWMIService.ExecQuery ("Select * from Win32_BIOS")
        For each objBIOS in colBIOS
        SerNo = objBIOS.SerialNumber
        'Wscript.Echo "Serial Number: " & SerNo
        NEXT

    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
        Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
        For Each objOperatingSystem in colOperatingSystems
        OS = objOperatingSystem.Caption & "  " & objOperatingSystem.Version
            'Wscript.Echo "Operating System: " & objOperatingSystem.Caption & "  " & objOperatingSystem.Version
        Next

    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
        Set colItems = objWMIService.ExecQuery("SELECT Version FROM Win32_ComputerSystemProduct")
        For Each objItem in colItems
        Model = objItem.Name
            'Wscript.Echo "Model: " & objItem.Name
        Next 

        objOutputFile.Writeline Username & ", " & PCName & ", " & PCMfg & ", " & SerNo & ", " & OS & ", "& Model

    objOutputFile.Close

x=msgbox("Process is now complete. Thank you for your time!" ,0, "PC Info Complete")

1 Ответ

0 голосов
/ 25 января 2020

Переместите строку, которая создает заголовки, в файл существует, проверьте, чтобы они создавались только один раз для файла:

If objFSO.FileExists(strFileOutput) Then
    Set objOutputFile = objFSO.OpenTextFile (strFileOutput, FOR_APPENDING)
Else
Set objOutputFile = objFSO.CreateTextFile(strFileOutput)
    'moved this line
    'Create Headers for Host, Manufacturer, Serial Number
    objOutputFile.Writeline "User Name, Host Name, Manufacturer, Serial Number, Operating System, Model"
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...