英文:
Format the data from Textfile to a CSV file
问题
我明白了你的问题。你想要修改你的VB脚本以确保"operatingSystem"、"operatingSystemVersion"、"whenCreated"和"whenChanged"数据被放在它们自己的列中,而不是混在"distinguishedName"列中。你可以尝试以下修改:
Option Explicit
Dim FSO, TextPath, CSVPath
Dim Textline, oText, oCSV
Dim CN, OU, i
Set FSO = CreateObject("Scripting.FileSystemObject")
TextPath = "fullq.txt"
Set oText = FSO.OpenTextFile(TextPath, 1)
CSVPath = "fullq.csv"
Set oCSV = FSO.CreateTextFile(CSVPath, 2, False)
oCSV.WriteLine("Name,DistinguishedName,OperatingSystem,OperatingSystemVersion,whenChanged,whenCreated")
oCSV.WriteLine
oText.SkipLine
Do Until oText.AtEndOfStream
Textline = oText.ReadLine()
OU = Split(TextLine, ",")
CN = Mid(OU(0), 5)
oCSV.Write CN & ","
oCSV.Write OU(1) & "," ' DistinguishedName
oCSV.Write OU(2) & "," ' OperatingSystem
oCSV.Write OU(3) & "," ' OperatingSystemVersion
oCSV.Write OU(4) & "," ' whenChanged
oCSV.Write OU(5) ' whenCreated
oCSV.WriteLine
Loop
oCSV.WriteLine
oCSV.Close
这个修改后的脚本应该能够将"operatingSystem"、"operatingSystemVersion"、"whenCreated"和"whenChanged"数据放在它们自己的列中,而不是混在"distinguishedName"列中。
英文:
I'm writing a script in VB Script to format Active directory data. I am using a Bat Script to produce the output in txt and I want to make a VB Script to format the data with headers.
My Batch script is
dsquery * -limit 0 -filter (objectclass=computer) -attr Name distinguishedName operatingSystem operatingSystemVersion whenChanged whenCreated > fullq.txt
The VB Script that I have is this currently
Option Explicit
Dim FSO, TextPath, CSVPath
Dim Textline, oText, oCSV
Dim CN, OU, i
Set FSO = CreateObject("Scripting.FileSystemObject")
TextPath = "fullq.txt"
Set oText = FSO.OpenTextFile(TextPath,1)
CSVPath = "fullq.csv"
Set oCSV = FSO.CreateTextFile(CSVPath, 2 ,False)
oCSV.WriteLine("Name,DistinguishedName,OperatingSystem,OperatingSystemVersion,whenChanged,whenCreated")
oCSV.WriteLine
oText.SkipLine
Do Until oText.AtEndOfStream
Textline = oText.ReadLine()
OU = Split(TextLine, ",")
CN = Mid(OU(0), 5)
oCSV.Write CN & ","
For i = 1 To UBound(OU)
oCSV.Write OU(i)
If i < UBound(OU) Then
oCSV.Write("/")
End If
Next
oCSV.Writeline
Loop
oCSV.WriteLine
oCSV.Close
The problem i have is the operatingSystem, operatingSystemVersion, whenCreated and whenChanged data is in distinguishedName column. I want it to be in their own respective column. The code above is mainly for DistinguishedName. I added new attribute which are operatingSystem, operatingSystemVersion, whenChanged, whenCreated. For distinguishedName, i would like to replaces the comma with "/" whereas the rest of the attributes I would like it to be written in their own respective column. I cant use PowerShell as the company blocked it.
The Output in the CSV look like this:
Name,DistinguishedName,OperatingSystem,OperatingSystemVersion,whenChanged,WhenCreated
PC1,OU=1/OU=2/OU=3/DC=4/DC=COM Window 123 12/12/12 10:10:10 12/12/12 10:10:10 , , ,
- Note that the comma represent new column
As written above, i tried this VB Script but the operatingSystem, operatingSystemVersion, whenCreated and whenChanged data is in distinguishedName column. I want it to be in their own respective column.
This is how the the fullq.txt would look like:
Name DistinguishedName OperatingSystem OperatingSystemVersion whenChanged WhenCreated
PC1 OU=1/OU=2/OU=3/DC=4/DC=COM Window 123
12/12/12 10:10:10 12/12/12 10:10:10
答案1
得分: 1
给定提供的fullq.txt
样本,可以将输入按" "
(两个空格)分割,然后忽略空条目并修整结果:
Const Excel = True
Set oFSO = CreateObject("Scripting.FileSystemObject")
TextPath = "fullq.txt"
Set oText = oFSO.OpenTextFile(TextPath,1)
CSVPath = "fullq.csv"
Set oCSV = oFSO.CreateTextFile(CSVPath,2,True)
If Excel Then oCSV.WriteLine "SEP=,"
oCSV.WriteLine "Name,DistinguishedName,OperatingSystem,OperatingSystemVersion,whenChanged,whenCreated"
oText.SkipLine
Do Until oText.AtEndOfStream
NewLine = ""
Textline = oText.ReadLine
aTextLine = Split(Textline," ")
For i = 0 To UBound(aTextLine)
If aTextLine(i)<>"" Then
If NewLine<>"" Then NewLine = NewLine & ","
NewLine = NewLine & Trim(aTextLine(i))
End If
Next
oCSV.Writeline NewLine
Loop
oText.Close
oCSV.Close
请注意,示例输入不包含逗号,因此我删除了按逗号分割的代码。
英文:
Given the fullq.txt
sample provided, the input can be split on " "
(two spaces) and then ignore empty entries and trim results:
Const Excel = True
Set oFSO = CreateObject("Scripting.FileSystemObject")
TextPath = "fullq.txt"
Set oText = oFSO.OpenTextFile(TextPath,1)
CSVPath = "fullq.csv"
Set oCSV = oFSO.CreateTextFile(CSVPath,2,True)
If Excel Then oCSV.WriteLine "SEP=,"
oCSV.WriteLine "Name,DistinguishedName,OperatingSystem,OperatingSystemVersion,whenChanged,whenCreated"
oText.SkipLine
Do Until oText.AtEndOfStream
NewLine = ""
Textline = oText.ReadLine
aTextLine = Split(Textline," ")
For i = 0 To UBound(aTextLine)
If aTextLine(i)<>"" Then
If NewLine<>"" Then NewLine = NewLine & ","
NewLine = NewLine & Trim(aTextLine(i))
End If
Next
oCSV.Writeline NewLine
Loop
oText.Close
oCSV.Close
Note that the sample input contained no commas, so I removed the code that splits on commas.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论