Format-Hex
Отображает файл или другие входные данные как шестнадцатеричные.
Синтаксис
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
Командлет .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 |
Position: | Named |
Default value: | Int64.MaxValue |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | 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
. Кодирование в формате UTF-8 с меткой порядка байтов (BOM) -
utf8NoBOM
. Кодирование в формате UTF-8 без метки порядка байтов (BOM) -
utf32
: кодирует в формате UTF-32.
Начиная с PowerShell 6.2, параметр кодировки
Заметка
UTF-7* больше не рекомендуется использовать. По состоянию на PowerShell 7.1 предупреждение записывается, если указать utf7
для параметра кодировки.
Тип: | Encoding |
Допустимые значения: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-InputObject
Указывает объекты, которые нужно отформатировать. Введите переменную, содержащую объекты или введите команду или выражение, которое получает объекты.
Поддерживаются только некоторые скалярные типа
Поддерживаемые скалярные типы:
-
[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 |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-LiteralPath
Указывает полный путь к файлу. Значение LiteralPath используется точно так же, как оно введите. Этот параметр не принимает подстановочные знаки. Чтобы указать несколько путей к файлам, разделите пути с запятой. Если параметр LiteralPath включает escape-символы, заключите путь в одинарные кавычки. PowerShell не интерпретирует никакие символы в одной кавычки как escape-последовательности. Дополнительные сведения см. в about_Quoting_Rules.
Тип: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Offset
Это число байтов для пропуска от части шестнадцатеричного вывода.
Этот параметр появился в PowerShell 6.2.
Тип: | Int64 |
Position: | Named |
Default value: | 0 |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Path
Указывает путь к файлам. Используйте точку (.
), чтобы указать текущее расположение. Подстановочный знак (*
) принимается и может использоваться для указания всех элементов в расположении. Если параметр Path включает escape-символы, заключите путь в одинарные кавычки. Чтобы указать несколько путей к файлам, разделите пути с запятой.
Тип: | String[] |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-Raw
Этот параметр больше не делает ничего. Он сохраняется для совместимости скриптов.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Вы можете передать строку в этот командлет.
Выходные данные
Этот командлет возвращает ByteCollection. Этот объект представляет коллекцию байтов. Он включает методы, которые преобразуют коллекцию байтов в строку, отформатированную как каждая строка выходных данных, возвращаемая Format-Hex
. Выходные данные также отображают тип обрабатываемых байтов. Если указать параметр path или LiteralPath, объект содержит путь к файлу, который содержит каждый байт. Если вы передаете строку, логическое значение, целое число и т. д., она будет помечена соответствующим образом.
Примечания
PowerShell включает следующие псевдонимы для Format-Hex
:
- Все платформы:
fhx
Правый столбец выходных данных пытается отобразить байты в виде символов ASCII:
Как правило, каждый байт интерпретируется как кодовая точка Юникода, что означает следующее:
- Отображаемые символы ASCII всегда отображаются правильно
- Многобайтовые символы UTF-8 никогда не отображаются правильно
- Символы UTF-16 отрисовываются правильно, только если их байты высокого порядка выполняются
NUL
.