Поделиться через


Format-Hex

Отображает файл или другие входные данные как шестнадцатеричные.

Синтаксис

Path

Format-Hex
    [-Path] <String[]>
    [-Count <Int64>]
    [-Offset <Int64>]
    [<CommonParameters>]

LiteralPath

Format-Hex
    -LiteralPath <String[]>
    [-Count <Int64>]
    [-Offset <Int64>]
    [<CommonParameters>]

ByInputObject

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

Описание

Командлет Format-Hex отображает файл или другие входные данные в виде шестнадцатеричных значений. Чтобы определить смещение символа из выходных данных, добавьте число в самую левую часть строки в число в верхней части столбца для этого знака.

Командлет Format-Hex поможет определить тип файла поврежденного файла или файла, который может не иметь расширения имени файла. Этот командлет можно запустить, а затем прочитать шестнадцатеричные выходные данные, чтобы получить сведения о файле.

При использовании Format-Hex в файле командлет игнорирует символы новой строки и возвращает все содержимое файла в одной строке с сохраненными символами новой строки.

Примеры

Пример 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 отправляется по конвейеру командлету Format-Hex. Шестнадцатеричные выходные данные из Format-Hex отображают значения каждого символа в строке.

Пример 2. Поиск типа файла из шестнадцатеричных выходных данных

В этом примере шестнадцатеричные выходные данные используются для определения типа файла. Командлет отображает полный путь к файлу и шестнадцатеричные значения.

Чтобы проверить следующую команду, создайте копию существующего 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

Командлет Format-Hex использует параметр пути для указания имени файла в текущем каталоге 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.

Свойства параметра

Тип:Int64
Default value:Int64.MaxValue
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Encoding

Задает кодировку входных строк. Это относится только к [string] входным данным. Параметр не влияет на числовые типы. Выходное значение всегда utf8NoBOM.

Допустимые значения для этого параметра приведены следующим образом:

  • ascii: использует кодировку для набора символов ASCII (7-разрядный).
  • ansi. Использует кодировку текущей культуры для кодовой страницы ANSI. Этот параметр добавлен в PowerShell 7.4.
  • bigendianunicode: кодирует в формате UTF-16 с использованием большого порядка байтов.
  • bigendianutf32: кодирует в формате UTF-32 в порядке старших байтов.
  • oem. Использует кодировку по умолчанию для MS-DOS и консольных программ.
  • unicode: кодирует в формате UTF-16 в порядке байтов младшего разряда.
  • utf7: кодирует в формате UTF-7.
  • utf8: кодирует в формате UTF-8.
  • utf8BOM. Кодирует в формате UTF-8 с пометкой порядка байтов (Byte Order Mark, BOM)
  • utf8NoBOM: Кодирует в формате UTF-8 без метки порядка байтов (BOM)
  • utf32: кодирует в формате UTF-32.

Начиная с PowerShell 6.2, параметр кодировки также позволяет использовать числовые идентификаторы зарегистрированных кодовых страниц (например, ) или строковые имена зарегистрированных кодовых страниц (например, ). Дополнительные сведения см. в документации .NET для Encoding.CodePage.

Начиная с PowerShell 7.4, можно использовать значение Ansi для параметра кодировки, чтобы передать числовой идентификатор ANSI-страницы текущей культуры, не указывая его вручную.

Замечание

UTF-7* больше не рекомендуется использовать. Начиная с версии PowerShell 7.1, выводится предупреждение, если задать utf7 как параметр кодировки.

Свойства параметра

Тип:Encoding
Default value:UTF8NoBOM
Допустимые значения:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

ByInputObject
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов: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 будет обрабатывать входные данные конвейера с несколькими типами входных данных, группируя все такие объекты вместе. Теперь он обрабатывает каждый отдельный объект по мере прохождения конвейера и не группирует объекты вместе, если только объекты не находятся рядом.

Свойства параметра

Тип:PSObject
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

ByInputObject
Position:Named
Обязательно:True
Значение из конвейера:True
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-LiteralPath

Указывает полный путь к файлу. Значение LiteralPath используется именно так, как оно введено. Этот параметр не принимает подстановочные знаки. Чтобы указать несколько путей к файлам, разделите пути с запятой. Если параметр LiteralPath включает escape-символы, заключите путь в одинарные кавычки. PowerShell не интерпретирует никакие символы в одной кавычки как escape-последовательности. Дополнительную информацию см. в разделе about_Quoting_Rules.

Свойства параметра

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:PSPath, LP

Наборы параметров

LiteralPath
Position:Named
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Offset

Это число байтов для пропуска от части шестнадцатеричного вывода.

Этот параметр появился в PowerShell 6.2.

Свойства параметра

Тип:Int64
Default value:0
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Path

Указывает путь к файлам. Используйте точку (.), чтобы указать текущее расположение. Подстановочный знак (*) принимается и может использоваться для указания всех элементов в расположении. Если параметр Path включает escape-символы, заключите путь в одинарные кавычки. Чтобы указать несколько путей к файлам, разделите пути с запятой.

Свойства параметра

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

Path
Position:0
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Raw

Этот параметр больше не делает ничего. Он сохраняется для совместимости скриптов.

Свойства параметра

Тип:SwitchParameter
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

ByInputObject
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

CommonParameters

Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.

Входные данные

String

Вы можете передать строку в этот командлет.

Выходные данные

ByteCollection

Этот командлет возвращает ByteCollection. Этот объект представляет коллекцию байтов. Он включает методы, которые преобразуют коллекцию байтов в строку, отформатированную как каждая строка выходных данных, возвращаемая Format-Hex. Выходные данные также отображают тип обрабатываемых байтов. Если указать параметр path или LiteralPath, объект содержит путь к файлу, который содержит каждый байт. Если вы передаете строку, логическое значение, целое число и т. д., она будет помечена соответствующим образом.

Примечания

PowerShell включает следующие псевдонимы для Format-Hex:

  • Все платформы:
    • fhx

Правый столбец выходных данных пытается отобразить байты в виде символов ASCII:

Как правило, каждый байт интерпретируется как кодовая точка Юникода, что означает следующее:

  • Отображаемые символы ASCII всегда отображаются правильно
  • Многобайтовые символы UTF-8 никогда не отображаются правильно
  • Символы UTF-16 отрисовываются правильно, только если их байты высокого порядка выполняются NUL.