共用方式為


Format-Hex

以十六進位格式顯示檔案或其他輸入。

Syntax

Format-Hex
      [-Path] <String[]>
      [-Count <Int64>]
      [-Offset <Int64>]
      [<CommonParameters>]
Format-Hex
      -LiteralPath <String[]>
      [-Count <Int64>]
      [-Offset <Int64>]
      [<CommonParameters>]
Format-Hex
      -InputObject <PSObject>
      [-Encoding <Encoding>]
      [-Count <Int64>]
      [-Offset <Int64>]
      [-Raw]
      [<CommonParameters>]

Description

Cmdlet 會將 Format-Hex 檔案或其他輸入顯示為十六進位值。 若要判斷輸出中的字元位移,請將資料列最左邊的數字加到該字元的資料欄上方的數字。

Cmdlet Format-Hex 可協助您判斷損毀檔案的檔類型,或可能沒有擴展名的檔案。 您可以執行此 Cmdlet,然後讀取十六進位輸出以取得檔案資訊。

Format-Hex在檔案上使用 時,Cmdlet 會忽略換行符,並在一個字串中傳回檔案的整個內容,並保留換行符。

範例

範例 1︰取得字串的十六進位表示法

此命令會傳回字串的十六進位值。

'Hello World' | Format-Hex

Label: String (System.String) <2944BEC3>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 48 65 6C 6C 6F 20 57 6F 72 6C 64                Hello World

Hello World 字串會向下傳送至 Cmdlet。Format-HexFormat-Hex 十六進位輸出會顯示字串中每個字元的值。

範例 2:從十六進位輸出尋找檔類型

此範例會使用十六進位輸出來判斷檔類型。 Cmdlet 會顯示檔案的完整路徑和十六進位值。

若要測試下列命令,請在本機電腦上建立現有 PDF 檔案的複本,並將複製的檔案重新命名為 File.t7f

Format-Hex -Path .\File.t7f -Count 48

Label: C:\Test\File.t7f

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 25 50 44 46 2D 31 2E 35 0D 0A 25 B5 B5 B5 B5 0D %PDF-1.5..%????.
0000000000000010 0A 31 20 30 20 6F 62 6A 0D 0A 3C 3C 2F 54 79 70 .1 0 obj..<</Typ
0000000000000020 65 2F 43 61 74 61 6C 6F 67 2F 50 61 67 65 73 20 e/Catalog/Pages

Cmdlet Format-Hex 會使用 Path 參數來指定目前目錄中的檔案名。 File.t7f 擴展名 .t7f 不常見,但十六進位輸出 %PDF 會顯示它是 PDF 檔案。 在此範例中, Count 參數用來將輸出限制為檔案的前 48 個字節。

範例 3:格式化不同數據類型的數位

此範例會使用不同數據類型的數位來反白顯示如何在 Format-Hex 管線中處理它們。

它會透過管線傳遞每個物件,並個別處理。 不過,如果是數值數據,而連續的物件也是數值,則會將它們分組成單一輸出區塊。

'Hello world!', 1, 1138, 'foo', 'bar', 0xdeadbeef, 1gb, 0b1101011100 , $true, $false | Format-Hex

Label: String (System.String) <24F1F0A3>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 48 65 6C 6C 6F 20 77 6F 72 6C 64 21             Hello world!

   Label: Int32 (System.Int32) <2EB933C5>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 01 00 00 00 72 04 00 00                         �   r�

   Label: String (System.String) <4078B66C>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 66 6F 6F                                        foo

   Label: String (System.String) <51E4A317>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 62 61 72                                        bar

   Label: Int32 (System.Int32) <5ADF167B>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 EF BE AD DE 00 00 00 40 5C 03 00 00             ï¾-Þ   @\�

   Label: Boolean (System.Boolean) <7D8C4C1D>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 01 00 00 00 00 00 00 00                         �

參數

-Count

這表示要包含在十六進位輸出中的位元元組數目。

此參數是在 PowerShell 6.2 中引進。

Type:Int64
Position:Named
Default value:Int64.MaxValue
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

指定輸入字串的編碼方式。 這隻適用於 [string] 輸入。 參數對數值類型沒有任何作用。 輸出值一律 utf8NoBOM為 。

此參數可接受的值如下所示:

  • ascii:使用 ASCII (7 位) 字元集的編碼方式。
  • bigendianunicode:使用大位元組位元組順序以UTF-16格式編碼。
  • bigendianutf32:使用大位元組位元組順序以UTF-32格式編碼。
  • oem:使用 MS-DOS 和控制台程式的預設編碼方式。
  • unicode:使用位元組由小到大的順序,以UTF-16格式編碼。
  • utf7:以 UTF-7 格式編碼。
  • utf8:以 UTF-8 格式編碼。
  • utf8BOM:使用位元組順序標記 (BOM) 以 UTF-8 格式編碼
  • utf8NoBOM:以 UTF-8 格式編碼,不含位元組順序標記 (BOM)
  • utf32:以 UTF-32 格式編碼。

從 PowerShell 6.2 開始, Encoding 參數也允許已註冊代碼頁的數值標識符, (例如 -Encoding 1251) 或已註冊代碼頁的字串名稱 (,例如 -Encoding "windows-1251") 。 如需詳細資訊,請參閱 Encoding.CodePage 的 .NET 檔。

注意

不再建議使用UTF-7* 。 自 PowerShell 7.1 起,如果您為 Encoding 參數指定utf7,則會寫入警告。

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

指定要格式化的物件。 輸入包含物件的變數,或輸入可取得物件的命令或運算式。

只支援特定 純量 型別和 [system.io.fileinfo]

支援的純量類型為:

  • [string], [char]
  • [byte], [sbyte]
  • [int16], [uint16], [short], [ushort]
  • [int], [uint], [int32], [uint32],
  • [long], [ulong], [int64], [uint64]
  • [single], [float], [double]
  • [boolean]

在 PowerShell 6.2 之前, Format-Hex 會將所有類似物件群組在一起,以處理具有多個輸入類型的管線輸入。 現在,它會在傳遞管線時處理每個個別物件,除非類似對象相鄰,否則不會將物件群組在一起。

Type:PSObject
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

指定檔案的完整路徑。 LiteralPath 的值會與類型完全相同使用。 此參數不接受萬用字元。 若要指定檔案的多個路徑,請使用逗號分隔路徑。 如果 LiteralPath 參數包含逸出字元,請將路徑括在單引號中。 PowerShell 不會將單引號字串中的任何字元解譯為逸出序列。 如需詳細資訊,請參閱 about_Quoting_Rules

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Offset

這代表要跳過的位元組數目,而無法成為十六進位輸出的一部分。

此參數是在 PowerShell 6.2 中引進。

Type:Int64
Position:Named
Default value:0
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

指定檔案的路徑。 使用點 (.) 來指定目前的位置。 接受通配符 (*) ,而且可用來指定位置中的所有專案。 如果 Path 參數包含逸出字元,請將路徑括在單引號中。 若要指定檔案的多個路徑,請使用逗號分隔路徑。

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-Raw

此參數不再執行任何動作。 它會保留供腳本相容性使用。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

String

您可以使用管線傳送字串至此 Cmdlet。

輸出

ByteCollection

此 Cmdlet 會傳回 ByteCollection。 此物件表示位元組的集合。 它包含方法,可將位元組集合轉換成格式化的字串,就像所傳回的每一行輸出一 Format-Hex樣。 輸出也會指出正在處理的位元組類型。 如果您指定 PathLiteralPath 參數,物件會包含包含每個位元組的檔案路徑。 如果您傳遞字串、布爾值、整數等,則會適當地加上標籤。

備註

PowerShell 包含的下列別名 Format-Hex

  • 所有平台:
    • fhx

輸出最右邊的數據行會嘗試將位元組轉譯為 ASCII 字元:

一般而言,每個位元組都會解譯為 Unicode 字碼指標,這表示:

  • 可列印的 ASCII 字元一律會正確轉譯
  • 多位元組UTF-8字元永遠不會正確轉譯
  • 只有在發生高序位元組時,UTF-16 字元才會正確轉譯。NUL