2017-10-11 134 views
0

我是Powerhell的新手,嘗試從腳本解碼以下行:在PowerShell中的-f是什麼意思?

Get-WmiObject -class MSFC_FCAdapterHBAAttributes -namespace「root \ WMI」|的foreach對象{(($ .NodeWWN)|的foreach對象{「{0:X}」 -f $})}

腳本可在:https://gallery.technet.microsoft.com/scriptcenter/Find-HBA-and-WWPN-53121140

我更感興趣的是「ForEach-Object {」{0:x}「-f $ _}」

「{0:x}」是什麼意思?

那麼-f對當前對象$ _做什麼?

當我在Windows服務器上運行腳本時,發現其中一個NodeWWN條目: NodeWWN:{32,0,0,16 ...}現在轉換爲: 20:00:00: 10:9B:17:9E:28

如果這裏的專家能夠幫助我指出發生了什麼,我們將非常感激。

回答

1

-f格式操作者,在about_operators描述:

-f格式操作者

格式通過使用字符串對象的格式方法字符串。在運算符左側輸入格式字符串,並在運算符右側輸入要格式化的對象。

PS> "{0} {1,-10} {2:N}" -f 1,"hello",[math]::pi 

# 1 hello  3.14 

有關詳細信息,請參閱String.Format方法和Composite Formatting

表達

<a> -f <b> 

相當於調用

[string]::Format(<a>, <b>) 

這也意味着,在格式字符串佔位符遵循相同的規則如在別處。一般的佔位符是{0},{1}等,它們可以有一個格式插入佔位符的類型,就像在你的例子中使用{0:x}那樣會將一個整數格式化爲一個十六進制數。當然,CLR中各種類型的預定義和自定義格式字符串可以在.NET documentation中找到。

0

-f運算符將其左側參數作爲所需輸出的描述,將其右側參數作爲要插入到該字符串中的值的數組。 {0:x}指定如何格式化參數;描述可在SS64's page on the -f operator找到。

0

這是完全有道理的。我試圖打印出NodeWWN的內容作爲是: {32,0,0,16,155,23,158,40}

與琴絃fomrat操作,其中它從整數轉換爲十六進制的幫助下,我查看輸出 20,0,0,10,9b,17,9e,28這是我最初發布的問題的答案。

非常感謝幫助我弄清楚這一點。感謝所有的幫助!

相關問題