Powershell實用命令(1)
將輸出的結果轉變成自己想要的對象類型,例如,我有一個小數,但是我只想要他的整數位,這裏我們可以用-as操作符,在as後面接你想轉換的類型可以是[int],[string]等
1.23 -as [int]
這條命令就是將1.23這個小數轉換成整型值,所以最後我們得到的結果就是1,這個功能經常用於一些磁盤空間的或者數據方面的轉換,需要註意的是,這個轉換時使用的四舍五入的機制,就是說,如果小數值是大於等於0.5的會在整數位加1
取整這個還有幾種方法,這裏也介紹一下,有時候我們可能需要把小數位直接算成整數,或者小數位直接舍去,那麽遇到這種情況我們可以通過[math]::Floor()和[math]::Ceiling()來執行,例如:
PS C:\Windows\system32> $a=2.33
PS C:\Windows\system32> [math]::Ceiling($a)
3
PS C:\Windows\system32> [math]::Floor($a)
2
通過上面的代碼,我們可以看到,ceiling函數是向上取整,就是小數位統統往整數上加1,floor函數是向下取整,小數位統統忽略,甭管你是不是大於0.5
和前面提到的[int]直接轉整數的,還有一種方式,就是[convert]::Toint32($a),也可以得到四舍五入的取整結果,當然Toint32的功能不僅僅是簡單的轉換小數,他還可以用於轉換2進制,10進制,16進制等等,例如
PS C:\Windows\system32> $a = [convert]::ToString(188,2) PS C:\Windows\system32> [convert]::ToInt32($a) 10111100 PS C:\Windows\system32> [convert]::ToInt32($a,2) 188 PS C:\Windows\system32> [convert]::ToInt32($a,8) 2134592 PS C:\Windows\system32> [convert]::ToInt32($a,16) 269553920 PS C:\Windows\system32> [convert]::ToInt32($a,10) 10111100
首先我把188轉成2進制形式賦值給a變量(聽清楚是形式,它實際上是一個字符串值,要確認可以直接用$a.gettype()去看下他的類型),然後測試直接轉成整型,接著轉2進制,8進制,16進制和10進制,嗯,看起來沒毛病,對吧,老鐵。
好,我們接著下一個比較實用的命令,通過哈希表達式來轉換輸入的格式
我想平時寫腳本導出資料的時候,你應該會遇到導出的結果的欄位名稱你覺得不滿意,想改成自己想要的名字,甭管為啥,就是想改,有句話怎麽說來著,我就是喜歡你看我不慣又拿我沒轍的樣子,就是這麽任性。
OK,小case,哈希表達式幫您忙,舉個簡單的例子,我想把輸入的欄位英文改成我要的中文,看代碼:
PS C:\Windows\system32> Get-Process | select name -First 3
Name
----
AcroRd32
AcroRd32
ApplicationFrameHost
我們用get-process抓3條進程名字,可以發現名字欄位是Name,作為一個愛國的五好青年,我得把這個Name改成中文,看我代碼大法
PS C:\Windows\system32> Get-Process | select @{name=‘名稱‘;expression={$_.Name}} -First 3
名稱
--
AcroRd32
AcroRd32
ApplicationFrameHost
看見沒,Name沒有了,我中華漢字取而代之,name和expression可以縮寫成n和e @{n=‘想要的名稱‘;e={可以是一個代碼輸出的值,也可以是值}}
延伸一下,我們知道平時我們使用ft或者fl這樣的輸出格式命令的時候是沒有指定輸出值的對齊功能的,Powershell會默認去對齊,但是這樣會發現有的是左對齊,有的是右對齊,還能不能好好玩耍了,非要整2個對齊方式幹嘛,我只需要一種對齊方式,我們可以通過哈希表達式來解決,只需要在表達式中加入align=‘left‘或者‘right‘,就可以讓數據左對齊,或者右對齊了,例如@{n=‘名稱‘;e={$_.name};align=‘left‘}
今天就說到這了,要想了解更多,且聽下回分解,散會!
Powershell實用命令(1)