您好,登錄后才能下訂單哦!
豆子之前在腳本里面自定義對象的時候一般是這么考慮的,我需要創建一個數組,每次循環的時候把一個自定義的對象放進去,對于這個自定義的對象的結構,我需要創建一個哈希表,然后轉換成自定義對象。這個思路是沒錯,不過具體寫的時候有些小技巧。
比如說最近看的一個小挑戰,其中需要把下面這個$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
后來改進了一下,不需要在循環外定義,直接在循環里面就可以創建哈希表并強制轉換了
$result2=@() $list -split "`n" | foreach { $split = $_ -split " ",2 $temp=[pscustomobject]@{Count=$split[0];Item = $split[1].trim()} $result2+=$temp } $result2
再后來,發現還可以更精簡一下
$gifts = $list -split "`n" | foreach { $split = $_ -split " ",2 [pscustomobject]@{Count=$split[0];Item = $split[1].trim()} } $gifts
注意第一個方式是PS 2.0時代的寫法,進入3.0以后就可以使用后面兩張簡單的寫法了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。