我正在執行一個程式,該程式將這種格式的資料回傳到視窗:
Name : Computername
ID : number
Host Name : Hostname
Added : date
Online : True
Uptime : 3 hours
Boot Time : time
Current User : user
IP Address : ip
MAC Address : mac
Time Zone : Eastern Standard Time
Operating System
Name : Microsoft Windows 11 Enterprise Insider Preview
Version : 10.0.22463.1000
SP / Release : Dev
Installed : time
Serial Numbe : serial
System Drive : C
PowerShell Version: 5.1.22463.1000
IE Version : 11.1000.22463.0
Architecture : 64-bit
.NET Versions : 2.0 SP 2, 3.0 SP 2, 3.5 SP 1, 4.0 Client, 4.0 Full, 4.8 (or later)
Active Directory
Path : AD path
Description : desc
Domain : domain
Created : data
System
Manufacturer : Dell Inc.
Model : model
Memory : 32 GB
Serial Number : serial
BIOS Version : version
BIOS Manufacturer : Dell Inc.
BIOS Asset Tag : 00000000
當我得到型別時,它是:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
我可以按陣列決議,如:
$computerdata[0]
但它會回傳:
Name : Computername
它將每一行存盤在陣列中。
如果我使用:
$computerdata | ConvertTo-Json
我得到:
[
"Name : Computername",
"ID : number",
"Host Name : hostname",
"Added : date",
"Online : True",
"Uptime : 3 hours",
"Boot Time : time",
"Current User : user",
"IP Address : ip",
"MAC Address : mac",
"Time Zone : Eastern Standard Time",
"",
"Operating System",
"Name : Microsoft Windows 11 Enterprise Insider Preview",
"Version : 10.0.22463.1000",
"SP / Release : Dev",
"Installed : time",
"Serial Numbe : serial",
"System Drive : C",
"PowerShell Version: 5.1.22463.1000",
"IE Version : 11.1000.22463.0",
"Architecture : 64-bit",
".NET Versions : 2.0 SP 2, 3.0 SP 2, 3.5 SP 1, 4.0 Client, 4.0 Full, 4.8 (or later)",
"",
"Active Directory",
"Path : AD path,
"Description : desc",
"Domain : domain",
"Created : data",
"",
"System",
"Manufacturer : Dell Inc.",
"Model : model",
"Memory : 32 GB",
"Serial Number : serial",
"BIOS Version : version",
"BIOS Manufacturer : Dell Inc.",
"BIOS Asset Tag : 00000000"
]
從那里我不確定要去哪里,因為我可以看到我仍然會抓住整條線。
你如何決議這種格式的資料或轉換成更好的格式的json?
uj5u.com熱心網友回復:
最好的 cmdlet 是 Get-ComputerInfo
然后,您可以將其通過管道傳輸到ConvertTo-Jsoncmdlet
Get-ComputerInfo | ConvertTo-Json
但是,如果您需要從應用程式的輸出中收集資訊,您可以將輸出重定向到一個檔案,使用 讀取它get-content,將其存盤在名為 output 的變數中,用冒號拆分資料,在存盤之前修剪您的鍵值對將它們放入哈希表中,然后將其轉換為 JSON 物件。類似于下面...
$output = Get-Content -Path C:\output.txt
$hashObj = @{}
$hashObj2 = @{}
$category = "Host"
foreach($line in $output){
if($line -cnotmatch ":" -and $line -ne " "){
$category = $line
$categoryChanged = $true
$hashObj2 = @{}
}
if($line -cmatch ":"){
$data = $line.Split(":")
$key = $($data[0].trim(' '))
$val = $($data[1].trim(' '))
$hashObj2.Add("$key","$val")
if(!($hashObj.ContainsKey($category))){
$hashObj.Add("$category",$hashObj2)
}
else{
$hashObj."$category".Add("$key","$val")
}
$hashObj2 = @{}
}
}
$jsonObj = $hashObj | convertto-json
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/314432.html
標籤:电源外壳 解析 powershell-7.0
上一篇:從字串決議浮點數(v-lang)
