我有不同的數據像這樣的輸入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'錯誤,我不會把我的時間來調試這個:) –