Format-Hex
Exibe um arquivo ou outra entrada como hexadecimal.
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
O Format-Hex
cmdlet exibe um arquivo ou outra entrada como valores hexadecimal. Para determinar o deslocamento de um caractere da saída, adicione o número à extrema esquerda da linha ao número na parte superior da coluna para esse caractere.
O Format-Hex
cmdlet pode ajudá-lo a determinar o tipo de arquivo de um arquivo corrompido ou um arquivo que pode não ter uma extensão de nome de arquivo. Você pode executar esse cmdlet e ler a saída hexadecimal para obter informações de arquivo.
Ao usar Format-Hex
em um arquivo, o cmdlet ignora caracteres de nova linha e retorna todo o conteúdo de um arquivo em uma cadeia de caracteres com os caracteres de nova linha preservados.
Exemplos
Exemplo 1: Obter a representação hexadecimal de uma cadeia de caracteres
Esse comando retorna os valores hexadecimal de uma cadeia de caracteres.
'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
A cadeia de caracteres Olá, Mundo é enviada pelo pipeline para o Format-Hex
cmdlet . A saída hexadecimal de Format-Hex
mostra os valores de cada caractere na cadeia de caracteres.
Exemplo 2: localizar um tipo de arquivo da saída hexadecimal
Este exemplo usa a saída hexadecimal para determinar o tipo de arquivo. O cmdlet exibe o caminho completo do arquivo e os valores hexadecimal.
Para testar o comando a seguir, faça uma cópia de um arquivo PDF existente no computador local e renomeie o arquivo copiado para 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
O Format-Hex
cmdlet usa o parâmetro Path para especificar um nome de arquivo no diretório atual, File.t7f
. A extensão .t7f
de arquivo é incomum, mas a saída %PDF
hexadecimal mostra que é um arquivo PDF. Neste exemplo, o parâmetro Count é usado para limitar a saída aos primeiros 48 bytes do arquivo.
Exemplo 3: formatar uma matriz de diferentes tipos de dados
Este exemplo usa uma matriz de diferentes tipos de dados para realçar como Format-Hex
os manipula no Pipeline.
Ele passará cada objeto pelo Pipeline e processará individualmente. No entanto, se forem dados numéricos e o objeto adjacente também for numérico, ele os agrupará em um único bloco de saída.
'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 �
Parâmetros
-Count
Isso representa o número de bytes a serem incluídos na saída hexadecimal.
Esse parâmetro foi introduzido no PowerShell 6.2.
Type: | Int64 |
Position: | Named |
Default value: | Int64.MaxValue |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Especifica a codificação das cadeias de caracteres de entrada. Isso só se aplica à [string]
entrada. O parâmetro não tem efeito sobre tipos numéricos. O valor de saída é sempre utf8NoBOM
.
Os valores aceitáveis para esse parâmetro são os seguintes:
ascii
: usa a codificação para o conjunto de caracteres ASCII (7 bits).bigendianunicode
: codifica no formato UTF-16 usando a ordem de bytes big-endian.bigendianutf32
: codifica no formato UTF-32 usando a ordem de bytes big-endian.oem
: usa a codificação padrão para MS-DOS e programas de console.unicode
: codifica no formato UTF-16 usando a ordem de bytes little-endian.utf7
: codifica no formato UTF-7.utf8
: codifica no formato UTF-8.utf8BOM
: codifica no formato UTF-8 com BOM (Marca de Ordem de Byte)utf8NoBOM
: codifica no formato UTF-8 sem BOM (Marca de Ordem de Byte)utf32
: codifica no formato UTF-32.
A partir do PowerShell 6.2, o parâmetro Encoding também permite IDs numéricas de páginas de código registradas (como -Encoding 1251
) ou nomes de cadeia de caracteres de páginas de código registradas (como -Encoding "windows-1251"
). Para obter mais informações, consulte a documentação do .NET para Encoding.CodePage.
Observação
UTF-7* não é mais recomendável usar. A partir do PowerShell 7.1, um aviso será gravado se você especificar utf7
para o parâmetro Decodificação .
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
Especifica os objetos a serem formatados. Insira uma variável que contém os objetos ou digite um comando ou uma expressão que obtém os objetos.
Há suporte apenas para determinados tipos escalares.[system.io.fileinfo]
Os tipos escalares com suporte são:
[string]
,[char]
[byte]
,[sbyte]
[int16]
,[uint16]
,[short]
,[ushort]
[int]
,[uint]
,[int32]
,[uint32]
,[long]
,[ulong]
,[int64]
,[uint64]
[single]
,[float]
,[double]
[boolean]
Antes do PowerShell 6.2, Format-Hex
lidaria com uma entrada de pipeline com vários tipos de entrada agrupando todos os objetos semelhantes. Agora, ele manipula cada objeto individual à medida que passa pelo Pipeline e não agrupa objetos juntos, a menos que objetos como sejam adjacentes.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Especifica o caminho completo para um arquivo. O valor de LiteralPath é usado exatamente como ele é digitado. Esse parâmetro não aceita caracteres curinga. Para especificar vários caminhos para arquivos, separe os caminhos com uma vírgula. Se o parâmetro LiteralPath incluir caracteres de escape, coloque o caminho entre aspas simples. O PowerShell não interpreta nenhum caractere em uma única cadeia de caracteres entre aspas como sequências de escape. Para obter mais informações, consulte about_Quoting_Rules.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Offset
Isso representa o número de bytes a serem ignoradas para fazer parte da saída hexadecimal.
Esse parâmetro foi introduzido no PowerShell 6.2.
Type: | Int64 |
Position: | Named |
Default value: | 0 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Especifica o caminho para os arquivos. Use um ponto (.
) para especificar o local atual. O caractere curinga (*
) é aceito e pode ser usado para especificar todos os itens em um local. Se o parâmetro Path incluir caracteres de escape, coloque o caminho entre aspas simples. Para especificar vários caminhos para arquivos, separe os caminhos com uma vírgula.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Raw
Esse parâmetro não faz mais nada. Ele é mantido para compatibilidade de script.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Você pode redirecionar uma cadeia de caracteres para este cmdlet.
Saídas
Esse cmdlet retorna um ByteCollection. Esse objeto representa uma coleção de bytes. Ele inclui métodos que convertem a coleção de bytes em uma cadeia de caracteres formatada como cada linha de saída retornada por Format-Hex
. A saída também declara o tipo de bytes que estão sendo processados. Se você especificar o parâmetro Path ou LiteralPath , o objeto conterá o caminho do arquivo que contém cada byte. Se você passar uma cadeia de caracteres, booliana, inteiro, etc., ela será rotulada adequadamente.
Observações
O PowerShell inclui os seguintes aliases para Format-Hex
:
- Todas as plataformas:
fhx
A coluna mais à direita da saída tenta renderizar os bytes como caracteres ASCII:
Geralmente, cada byte é interpretado como um ponto de código Unicode, o que significa que:
- Caracteres ASCII imprimíveis são sempre renderizados corretamente
- Caracteres UTF-8 de vários bytes nunca são renderizados corretamente
- Os caracteres UTF-16 serão renderizados corretamente somente se o byte de alta ordem for
NUL
.