Format-Hex
Exibe um arquivo ou outra entrada como hexadecimal.
Sintaxe
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>]
Description
O cmdlet Format-Hex exibe um arquivo ou outra entrada como valores hexadecimal. Para determinar o deslocamento de um caractere da saída, adicione o número à esquerda da linha ao número na parte superior da coluna para esse caractere.
O cmdlet Format-Hex 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 do 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 Hello World é enviada pelo pipeline para o cmdlet Format-Hex. 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 cmdlet Format-Hex usa o parâmetro Path para especificar um nome de arquivo no diretório atual, File.t7f. A extensão de arquivo .t7f é incomum, mas a saída hexadecimal %PDF 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 destacar como Format-Hex lida com eles 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 hex.
Esse parâmetro foi introduzido no PowerShell 6.2.
Propriedades do parâmetro
| Tipo: | Int64 |
| Valor padrão: | Int64.MaxValue |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-Encoding
Especifica a codificação das cadeias de caracteres de entrada. Isso só se aplica a [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). -
ansi: usa a codificação para a página de código ANSI da cultura vigente. Essa opção foi adicionada ao PowerShell 7.4. -
bigendianunicode: codifica em formato UTF-16 usando a ordem de byte big-endian. -
bigendianutf32: codifica em formato UTF-32 usando a ordem de byte big-endian. -
oem: usa a codificação padrão para MS-DOS e programas de console. -
unicode: codifica em formato UTF-16 usando a ordem de byte little-endian. -
utf7: codifica em formato UTF-7. -
utf8: codifica em formato UTF-8. -
utf8BOM: codifica em formato UTF-8 com BOM (marca de ordem de byte) -
utf8NoBOM: codifica no formato UTF-8 sem BOM (Byte Order Mark) -
utf32: codifica em formato UTF-32.
A partir do PowerShell 6.2, o parâmetro de codificação de
A partir do PowerShell 7.4, você pode usar o valor Ansi para o parâmetro de Codificação para passar a ID numérica da página de código ANSI da cultura atual sem precisar especificá-la manualmente.
Observação
UTF-7* não é mais recomendável para uso. A partir do PowerShell 7.1, é gerado um aviso se você especifica utf7 para o parâmetro Encoding.
Propriedades do parâmetro
| Tipo: | Encoding |
| Valor padrão: | UTF8NoBOM |
| Valores aceitos: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
ByInputObject
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-InputObject
Especifica os objetos a serem formatados. Insira uma variável que contenha os objetos ou digite um comando ou expressão que obtém os objetos.
Há suporte apenas para determinados tipos de escalares e [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 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 semelhantes sejam adjacentes.
Propriedades do parâmetro
| Tipo: | PSObject |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
ByInputObject
| Cargo: | Named |
| Obrigatório: | True |
| Valor do pipeline: | True |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-LiteralPath
Especifica o caminho completo para um arquivo. O valor de LiteralPath é usado exatamente como é 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 mais informações, consulte sobre_Regras_de_Citação.
Propriedades do parâmetro
| Tipo: | String[] |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
| Aliases: | PSPath, LP |
Conjuntos de parâmetros
LiteralPath
| Cargo: | Named |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-Offset
Isso representa o número de bytes a ignorar de fazer parte da saída hex.
Esse parâmetro foi introduzido no PowerShell 6.2.
Propriedades do parâmetro
| Tipo: | Int64 |
| Valor padrão: | 0 |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-Path
Especifica o caminho para 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.
Propriedades do parâmetro
| Tipo: | String[] |
| Valor padrão: | None |
| Dá suporte a curingas: | True |
| DontShow: | False |
Conjuntos de parâmetros
Path
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-Raw
Esse parâmetro não faz mais nada. Ele é mantido para compatibilidade de script.
Propriedades do parâmetro
| Tipo: | SwitchParameter |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
ByInputObject
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
CommonParameters
Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.
Entradas
String
Você pode encaminhar uma cadeia de caracteres para este cmdlet.
Saídas
ByteCollection
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 indica o tipo de bytes que estão sendo processados. Se você especificar o de Caminho ou parâmetro 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:
Em geral, 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 ocorrer
NUL.