ConvertFrom-String 命令研究


 

-------先上個例子-------

$aaa =
@'
0.027 0.034 0.834 0.105
0.346 0.558 0.018 0.078
0.001 0.997 0.001 0.001
0.994 0.001 0.004 0.001
0.001 0.996 0.002 0.001
0.001 0.001 0.997 0.001
0.001 0.009 0.001 0.989
0.051 0.111 0.837 0.001
'@

$t =
@'
{字段名1*:0.027} {字段名2:0.034} {字段名3:0.834} {字段名4:0.105}
{字段名1*:0.346} 0.558 0.018 0.078
'@

#【字段名】也可以叫【屬性名】
$bbb = $aaa | ConvertFrom-String -TemplateContent $t
$bbb |Format-Table -AutoSize


-------命令解釋-------


ConvertFrom-String
命令的功能和目的:
把【行列整齊字符串】轉換成【PSCustomObject】

powershell 傳教士 原創文章 2016-01-06 允許轉載,但必須保留名字和出處,否則追究法律責任 ConvertFrom-String

腳本必然要進行文本處理,文本處理又沒有什么通用的規律可循。祖師爺發明的【模板】法真是太爽了!
字符串變成對象屬性后,粒度變小了,並且很容易輸出到數據庫,excel中,為行列轉換提供數據了。
那是一條神奇的天路啊啊~~,令字符的輸出變成對象~~,
從此那山不再高,扣輸出不再難,字符和對象歡聚一堂。

 

-------模板的具體制作方法-------

 

模板中,把要分列的內容,用大括號【{}】擴起來,里面加一個冒號,冒號前面是你定義的【屬性名】,冒號后面是【屬性值】
每行第一個【屬性名】后面要加上【*】,【模板行】至少要有兩行例子,至少要有兩個【*】,
例子的距離和真實數據的距離,不用一樣。如:

真實數據:
0.027 0.034<-- 這里是距離,有n個空格 -->0.834 0.105

模板:
{字段名1*:0.027} {字段名2:0.034}<-- 這里是距離,用一個空格,或一個tab即可 --> {字段名3:0.834} 0.105

 


-------其他例子-------


$返回數據 = @(netstat -an )
$返回數據 -replace '^\s+' | ConvertFrom-String -PropertyNames 協議, 本地IP端口, 外部IP端口, 狀態

 

 


-------感謝 群友 小樓 分享的例子-------

#Requires -Version 5.0
$s=@"
張三
25
李四
34
王五
12
趙六
65
"@

$t=@"
{Name*:張三}
{Age:25}
{Name*:李四}
{Age:34}
"@

$s | ConvertFrom-String -TemplateContent $t

結果:

Name Age
---- ---
張三 25
李四 34
王五 12
趙六 65


【長老】[小樓](55589641) 12:48:37
ConvertFrom-String的作用是提取文本中的有用信息,轉為psobject


$t=@"
SSID 1 : {bssid*:abcabc}
Network type : 結構
身份驗證 : WPA2 - 個人
加密 : CCMP
BSSID 1 : {macaddress:aa:bb:08:11:33:3c}
信號 : 83%
無線電類型 : 802.11n
頻道 : 3
基本速率(Mbps) : 1 2 5.5 11
其他速率(Mbps) : 6 9 12 18 24 36 48 54
SSID 2 : {bssid*:defdef}
Network type : 結構
身份驗證 : WPA2 - 個人
加密 : CCMP
BSSID 1 : {macaddress:cc:dd:e4:7a:c4:d8}
信號 : 64%
無線電類型 : 802.11n
頻道 : 6
基本速率(Mbps) : 1 2 5.5 11
其他速率(Mbps) : 6 9 12 18 24 36 48 54
"@

netsh wlan show network mode=bssid | ConvertFrom-String -TemplateContent $t
【長老】[小樓](55589641) 12:55:47
結果:
bssid macaddress
----- ----------
abc-internet b4:a4:e3:65:ea:60
sannongziben1 00:22:aa:ad:0b:44
abcd 64:f6:9d:d5:e4:40
abc-BYOD 64:f6:9d:d5:e4:42
abc-GUEST 64:f6:9d:d5:e4:41
sharmoon 78:a1:06:58:6d:82
sannongziben666 00:22:aa:ad:1c:d8
TP-LINK-88SL ec:26:ca:30:78:dc
abcde 00:1f:33:de:22:ae
TP-LINKlongten 14:75:90:bd:9a:cc
weijin 14:75:90:43:96:fe
CTC-INTER 14:cf:92:62:76:d4
D-Link_DIR-600M 34:08:04:7d:2a:b1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM