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.