溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Powershell 自定義對象小技巧

發(fā)布時間:2020-07-31 13:07:13 來源:網(wǎng)絡 閱讀:1388 作者:beanxyz 欄目:開發(fā)技術(shù)

豆子之前在腳本里面自定義對象的時候一般是這么考慮的,我需要創(chuàng)建一個數(shù)組,每次循環(huán)的時候把一個自定義的對象放進去,對于這個自定義的對象的結(jié)構(gòu),我需要創(chuàng)建一個哈希表,然后轉(zhuǎn)換成自定義對象。這個思路是沒錯,不過具體寫的時候有些小技巧。


比如說最近看的一個小挑戰(zhàn),其中需要把下面這個$list的值自定義一個對象保存出來。

$list = @"
1 Partridge in a pear tree
2 Turtle Doves
3 French Hens
4 Calling Birds
5 Golden Rings
6 Geese a laying
7 Swans a swimming
8 Maids a milking
9 Ladies dancing
10 Lords a leaping
11 Pipers piping
12 Drummers drumming
"@


我寫的第一個版本是最啰嗦的:

$pp=$null
$pp=[ordered]@{"Count"=$null;"Gift"=$null}
$obj=New-Object -TypeName psobject -property $pp
$result=@()
$list.Split("`n") |ForEach-Object{
$temp=$obj | select *
$temp.Count=$_.Split("")[0] 
$temp.Gift=$_.Substring($_.Split("")[0].Length)
$result+=$temp
}
$result

Powershell 自定義對象小技巧


后來改進了一下,不需要在循環(huán)外定義,直接在循環(huán)里面就可以創(chuàng)建哈希表并強制轉(zhuǎn)換了

$result2=@()
$list -split "`n" | foreach {
$split =  $_ -split " ",2
$temp=[pscustomobject]@{Count=$split[0];Item = $split[1].trim()}
$result2+=$temp
}
$result2

Powershell 自定義對象小技巧


再后來,發(fā)現(xiàn)還可以更精簡一下

$gifts = $list -split "`n" | foreach {
$split =  $_ -split " ",2
[pscustomobject]@{Count=$split[0];Item = $split[1].trim()}
}
$gifts

Powershell 自定義對象小技巧


注意第一個方式是PS 2.0時代的寫法,進入3.0以后就可以使用后面兩張簡單的寫法了。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI