【发布时间】:2021-03-05 23:20:38
【问题描述】:
我从 LANCOM 路由器加载了文件 sysinfo 以获取一些信息。 是否可以使用 powershell 将此文件转换为 csv?
代码示例:
DEVICE: LANCOM 1781AW
HW-RELEASE: B
SERIAL-NUMBER: 123456789232
MAC-ADDRESS: 00a057xxxxxx
IP-ADDRESS: 192.168.0.251
IP-NETMASK: 255.255.255.0
INTRANET-ADDRESS: 0.0.0.0
INTRANETMASK: 0.0.0.0
VERSION: 10.42.0383RU2 / 03.03.2021
VERSION-GIT: 0aefbcd5f2aed7fe48f91a0232621aaaf0fed4e6
NAME: 1781AW
CONFIG-STATUS: 17440;0;bd524ad8aa0436cc571317e9bf5f3f25fa4bb961.12254905032021.2414
FIRMWARE-STATUS: 0;0.58;0.2;10.42.0383RU2.03032021.58;10.42.0280RU1.09022021.57
LOADER: 4.12.0001Rel
HW-MASK: 00001100000000000000000001110011
FEATUREWORD: 00000100001000000100000100011100
REGISTERED-WORD: 00000100001000000100000100011100
前两行是空的。
更新:
我在某些机器上没有 PowerShell 4.0 或更高版本。如果没有 ConvertFrom-String,我就没有解决方案。
这是我的代码示例:
$content=@'
DEVICE: LANCOM 1781AW
HW-RELEASE: B
SERIAL-NUMBER: 123456789232
MAC-ADDRESS: 00a057xxxxxx
IP-ADDRESS: 192.168.0.251
IP-NETMASK: 255.255.255.0
INTRANET-ADDRESS: 0.0.0.0
INTRANETMASK: 0.0.0.0
VERSION: 10.42.0383RU2 / 03.03.2021
VERSION-GIT: 0aefbcd5f2aed7fe48f91a0232621aaaf0fed4e6
NAME: 1781AWs
CONFIG-STATUS: 17440;0;bd524ad8aa0436cc571317e9bf5f3f25fa4bb961.12254905032021.2414
FIRMWARE-STATUS: 0;0.58;0.2;10.42.0383RU2.03032021.58;10.42.0280RU1.09022021.57
LOADER: 4.12.0001Rel
HW-MASK: 00001100000000000000000001110011
FEATUREWORD: 00000100001000000100000100011100
REGISTERED-WORD: 00000100001000000100000100011100
'@
$content=$content -replace '\s{2,}' -split ':|\n'
$array=@()
for($i=0;$i -lt $content.count;$i+=2)
{
$array+=[pscustomobject]@{($content[$i]).trim() = ($content[$i+1]).trim()}
}
$array |Export-Csv sysinfo.csv -Delimiter ";" -NoTypeInformation
这是sysinfo.csv中的内容
"DEVICE"
"LANCOM 1781AWHW-RELEASE"
这不是 CSV 格式。有什么想法吗?
我没有 ConvertFrom-String 的解决方案:
$sysinfo = Get-Content .\temp\$filename -Raw
$sysinfo=$sysinfo -split ':|\r|\n'
$sysinfo=$sysinfo -replace '\s{2,}'
$sysinfo=$sysinfo -notmatch '^\s*$'
$sysinfoParsed=@()
for($i=0;$i -lt $sysinfo.count;$i+=2) {
[array]$sysinfoParsed+=[pscustomobject]@{Name=($sysinfo[$i]).trim();Value=($sysinfo[$i+1])}
}
# Export to CSV
$sysinfoParsed |Export-Csv .\temp\sysinfo.csv -Delimiter ";" -NoTypeInformation
【问题讨论】:
标签: powershell