我有不同的数据像这样的输入txt文件:让行成为TXT列使用PowerShell
------------------------------------------------------------------------
Current Local Time: Fri Jul 01 04:54:27 2016
Current GMT Time: Thu Jun 30 20:54:27 2016
Machine ID: 6090
Machine Name: WL6090
Display S/N: 0253G020TG
Terrain version: 5.3.843.843
CAESTaskList DLL version: 5.3.843.843
Application Type: Terrain/CAES Ultra
Operating System: 1.04
Total RAM used by active files: 339.72 kB
----------------------------------------------------------------------------------------------------------
Disk Space
Free Disk Space: 6758 MB Total Disk Space: 7076 MB
----------------------------------------------------------------------------------------------------------
Current Local Time: 07-01-16, 04:54:27
Current Service Hours: 314.41
而且我每天都有很多这样的文件。 我试图与PowerShell中真正的新手抢仅供参考我从这些文件需要我做这样的:
$Location = "D:\terrain_dia\Diag01Jul2016_045427.dia"
$a = Get-Content D:\terrain_dia\Diag01Jul2016_045427.dia
#Common
$option = [System.StringSplitOptions]::RemoveEmptyEntries
#ID
$LineID = Select-String -Path $Location -Pattern "Machine ID:" | Select-Object -Expand LineNumber
$ID = ($a)[$LineID-1]
$ID -replace '(?:\s|\r|\n)',''
#Name
$LineName = Select-String -Path $Location -Pattern "Machine Name:" | Select-Object -Expand LineNumber
$Name = ($a)[$LineName-1]
$Name -replace '(?:\s|\r|\n)',''
#SN
$LineSN = Select-String -Path $Location -Pattern "Display S/N:" | Select-Object -Expand LineNumber
$SN = ($a)[$LineSN-1]
$SN -replace '(?:\s|\r|\n)',''
#Version
$LineVersion = Select-String -Path $Location -Pattern "Terrain version:" | Select-Object -Expand LineNumber
$Version = ($a)[$LineVersion-1]
$Version -replace '(?:\s|\r|\n)',''
#RAM
$LineRam = Select-String -Path $Location -Pattern "Total RAM" | Select-Object -Expand LineNumber
$RAM = ($a)[$LineRam-1]
$RAM -replace '(?:\s|\r|\n)',''
#GPSSN
$LineGPSSN = Select-String -Path $Location -Pattern "GPS Receiver SN:" | Select-Object -Expand LineNumber
$GPSSN = ($a)[$LineGPSSN-1]
$GPSSN -replace '(?:\s|\r|\n)',''
#GPSType
$LineGPSType = Select-String -Path $Location -Pattern "GPS Receiver Type:" | Select-Object -Expand LineNumber
$GPSType = ($a)[$LineGPSType-1]
$GPSType -replace '(?:\s|\r|\n)',''
#NAV
$LineNAV = Select-String -Path $Location -Pattern "NAV firmware version:" | Select-Object -Expand LineNumber
$NAV = ($a)[$LineNAV-1]
$NAV -replace '(?:\s|\r|\n)',''
#SIG
$LineSig = Select-String -Path $Location -Pattern "SIG firmware version:" | Select-Object -Expand LineNumber
$SIG = ($a)[$LineSig-1]
$SIG -replace '(?:\s|\r|\n)',''
#ROM
$LineROM = Select-String -Path $Location -Pattern "ROM firmware version:" | Select-Object -Expand LineNumber
$ROM = ($a)[$LineROM-1]
$ROM -replace '(?:\s|\r|\n)',''
我得到的输出:
MachineID:6090
MachineName:WL6090
DisplayS/N:0253G020TG
Terrainversion:5.3.843.843
TotalRAMusedbyactivefiles:339.72kB
GPSReceiverSN:3351J508SP
GPSReceiverType:MS992
NAVfirmwareversion:00506
SIGfirmwareversion:00506
ROMfirmwareversion:00425
FreeDiskSpace:6758MB
TotalDiskSpace:7076MB
所以我有一个固定的分隔符 但我真的需要得到的是:
MachineID MachineName DisplayS/N
6090 WL6090 0253G020TG
等
所以我需要格式化这个输出txt文件中的表格,然后我要去把它TE导致到MS SQL数据库..
请告知我该怎么格式化所有这些线使用PowerShell?
任何帮助将是非常有用的。
谢谢你喜欢这个
你要生成的文件,然后把它放到SQL服务器?你不可能把它直接放到SQL Server中吗? –
这个文件是否总有一个机器信息?或者它可以有几个MachineID? –
如果要导入到SQL Server中,最好直接生成SQL语句,而不是将其格式化为列。我可以帮你这个,但是当我在我的Windows 7系统上运行代码,我已经得到了'不能索引空array'错误,我不会把我的时间来调试这个:) –