Поиск по сайту:

Format-Hex (Microsoft.PowerShell.Utility)


Format-Hex

Модуль:
Microsoft.PowerShell.Utility

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

Синтаксис

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>]

Описание

Командлет 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 использует параметр 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.

Тип :

Int64

Позиция:

Именованный

Значение по умолчанию:

Int64.MaxValue

Необходимый:

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 с меткой порядка байтов (BOM).
  • utf8NoBOM: кодирует в формате UTF-8 без метки порядка байтов (BOM).
  • utf32: кодирует в формате UTF-32.

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

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

Примечание

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

Тип :

Кодирование

Принятые значения:

ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32

Позиция:

Именованный

Значение по умолчанию:

UTF8NoBOM

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-InputObject

Указывает объекты для форматирования. Введите переменную, содержащую объекты, или введите команду или выражение, позволяющее получить объекты.

Поддерживаются только определенные скалярные типы и [system.io.fileinfo].

Поддерживаемые скалярные типы:

  • [строка], [символ]
  • [байт], [сбайт]
  • [int16], [uint16], [short], [ushort]
  • [int], [uint], [int32], [uint32],
  • [long], [ulong], [int64], [uint64]
  • [одинарный], [float], [двойной]
  • [boolean]

До версии PowerShell 6.2 Format-Hex обрабатывал ввод Pipeline с несколькими типами ввода, группируя все похожие объекты вместе. Теперь он обрабатывает каждый отдельный объект, проходящий через конвейер, и не группирует объекты вместе, если одинаковые объекты не находятся рядом.

Тип :

PSОбъект

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-LiteralPath

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

Тип :

String[]

Псевдонимы:

PSPath, LP

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Offset

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

Этот параметр был введен в PowerShell 6.2.

Тип :

Int64

Позиция:

Именованный

Значение по умолчанию:

0

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Path

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

Тип :

String[]

Позиция:

0

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

True

-Raw

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

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

Входы

Строка

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

Выходы

ByteCollection

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

Примечания

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

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

      fhx

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

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

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