Format-Hex
Affiche un fichier ou une autre entrée en hexadécimal.
Syntaxe
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
L’applet Format-Hex
de commande affiche un fichier ou une autre entrée sous forme de valeurs hexadécimales. Pour déterminer le décalage d’un caractère de la sortie, ajoutez le nombre le plus à gauche de la ligne au nombre situé en haut de la colonne pour ce caractère.
L’applet Format-Hex
de commande peut vous aider à déterminer le type de fichier d’un fichier endommagé ou un fichier qui n’a peut-être pas d’extension de nom de fichier. Vous pouvez exécuter cette applet de commande, puis lire la sortie hexadécimale pour obtenir des informations sur le fichier.
Lors de l’utilisation Format-Hex
sur un fichier, l’applet de commande ignore les caractères newline et retourne l’intégralité du contenu d’un fichier dans une chaîne avec les caractères de nouvelle ligne conservés.
Exemples
Exemple 1 : Obtenir la représentation hexadécimale d’une chaîne
Cette commande retourne les valeurs hexadécimales d’une chaîne.
'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
La chaîne Hello World est envoyée au pipeline à l’applet de Format-Hex
commande. La sortie hexadécimale à partir d’affiche Format-Hex
les valeurs de chaque caractère dans la chaîne.
Exemple 2 : Rechercher un type de fichier à partir d’une sortie hexadécimale
Cet exemple utilise la sortie hexadécimale pour déterminer le type de fichier. L’applet de commande affiche le chemin complet du fichier et les valeurs hexadécimales.
Pour tester la commande suivante, effectuez une copie d’un fichier PDF existant sur votre ordinateur local et renommez le fichier File.t7f
copié en .
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
L’applet Format-Hex
de commande utilise le paramètre Path pour spécifier un nom de fichier dans le répertoire actif. File.t7f
L’extension .t7f
de fichier est rare, mais la sortie %PDF
hexadécimale indique qu’il s’agit d’un fichier PDF. Dans cet exemple, le paramètre Count est utilisé pour limiter la sortie aux 48 premiers octets du fichier.
Exemple 3 : Mettre en forme un tableau de différents types de données
Cet exemple utilise un tableau de différents types de données pour mettre en évidence la façon dont Format-Hex
ils sont gérés dans le pipeline.
Il transmet chaque objet via le pipeline et traite individuellement. Toutefois, s’il s’agit de données numériques et que l’objet adjacent est également numérique, il les regroupe en un seul bloc de sortie.
'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 �
Paramètres
-Count
Cela représente le nombre d’octets à inclure dans la sortie hexadécimal.
Ce paramètre a été introduit dans PowerShell 6.2.
Type: | Int64 |
Position: | Named |
Valeur par défaut: | Int64.MaxValue |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Encoding
Spécifie l’encodage des chaînes d’entrée. Cela s’applique uniquement à l’entrée [string]
. Le paramètre n’a aucun effet sur les types numériques. La valeur de sortie est toujours utf8NoBOM
.
Les valeurs acceptables pour ce paramètre sont les suivantes :
ascii
: utilise l’encodage pour le jeu de caractères ASCII (7 bits).ansi
: utilise l’encodage pour la page de codes ANSI de la culture actuelle. Cette option a été ajoutée dans PowerShell 7.4.bigendianunicode
: encode au format UTF-16 à l’aide de l’ordre d’octet big-endian.bigendianutf32
: encode au format UTF-32 à l’aide de l’ordre d’octet big-endian.oem
: utilise l’encodage par défaut pour les programmes MS-DOS et console.unicode
: encode au format UTF-16 à l’aide de l’ordre d’octet little-endian.utf7
: encode au format UTF-7.utf8
: encode au format UTF-8.utf8BOM
: encode au format UTF-8 avec marque d’ordre d’octet (BOM)utf8NoBOM
: encode au format UTF-8 sans marque d’ordre d’octet (BOM)utf32
: encode au format UTF-32.
À compter de PowerShell 6.2, le paramètre d’encodage autorise également les ID numériques des pages de codes inscrites (par -Encoding 1251
exemple) ou des noms de chaînes de pages de codes inscrites (par exemple -Encoding "windows-1251"
). Pour plus d’informations, consultez la documentation .NET pour Encoding.CodePage.
À compter de PowerShell 7.4, vous pouvez utiliser la Ansi
valeur du paramètre Encodage pour passer l’ID numérique de la page de codes ANSI de la culture actuelle sans avoir à le spécifier manuellement.
Remarque
UTF-7* n’est plus recommandé à utiliser. À partir de PowerShell 7.1, un avertissement est écrit si vous spécifiez utf7
le paramètre Encodage .
Type: | Encoding |
Valeurs acceptées: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Valeur par défaut: | UTF8NoBOM |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-InputObject
Spécifie les objets à mettre en forme. Entrez une variable contenant les objets, ou tapez une commande ou une expression qui les obtient.
Seuls certains types scalaires et [system.io.fileinfo]
sont pris en charge.
Les types scalaires pris en charge sont les suivants :
[string]
,[char]
[byte]
,[sbyte]
[int16]
, ,[uint16]
[short]
, ,[ushort]
[int]
, ,[uint]
[int32]
, ,[uint32]
[long]
, ,[ulong]
[int64]
, ,[uint64]
[single]
, ,[float]
[double]
[boolean]
Avant PowerShell 6.2, Format-Hex
gère une entrée de pipeline avec plusieurs types d’entrée en regroupant tous les objets similaires. À présent, il gère chaque objet individuel au fur et à mesure qu’il passe par le pipeline et ne regroupe pas d’objets, sauf si des objets similaires sont adjacents.
Type: | PSObject |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-LiteralPath
Spécifie le chemin d’accès complet à un fichier. La valeur de LiteralPath est utilisée exactement comme elle est typée. Ce paramètre n’accepte pas les caractères génériques. Pour spécifier plusieurs chemins d’accès aux fichiers, séparez les chemins d’accès par une virgule. Si le paramètre LiteralPath inclut des caractères d’échappement, placez le chemin entre guillemets simples. PowerShell n’interprète aucun caractère dans une chaîne entre guillemets unique comme séquences d’échappement. Pour plus d’informations, consultez about_Quoting_Rules.
Type: | String[] |
Alias: | PSPath, LP |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Offset
Cela représente le nombre d’octets à ignorer de faire partie de la sortie hexadécimal.
Ce paramètre a été introduit dans PowerShell 6.2.
Type: | Int64 |
Position: | Named |
Valeur par défaut: | 0 |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Path
Spécifie le chemin d’accès aux fichiers. Utilisez un point (.
) pour spécifier l’emplacement actuel. Le caractère générique (*
) est accepté et peut être utilisé pour spécifier tous les éléments dans un emplacement. Si le paramètre Path inclut des caractères d’échappement, placez le chemin entre guillemets simples. Pour spécifier plusieurs chemins d’accès aux fichiers, séparez les chemins d’accès par une virgule.
Type: | String[] |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | True |
-Raw
Ce paramètre ne fait plus rien. Elle est conservée pour la compatibilité des scripts.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
Entrées
Vous pouvez diriger une chaîne vers cette applet de commande.
Sorties
Cette applet de commande retourne un ByteCollection. Cet objet représente une collection d’octets. Il inclut des méthodes qui convertissent la collection d’octets en chaîne mise en forme comme chaque ligne de sortie retournée par Format-Hex
. La sortie indique également qu’ils type d’octets en cours de traitement. Si vous spécifiez le paramètre Path ou LiteralPath , l’objet contient le chemin d’accès du fichier qui contient chaque octet. Si vous passez une chaîne, booléenne, entier, etc., elle sera étiquetée de manière appropriée.
Notes
PowerShell inclut les alias suivants pour Format-Hex
:
- Toutes les plateformes :
fhx
La colonne de sortie la plus à droite tente d’afficher les octets sous forme de caractères ASCII :
En règle générale, chaque octet est interprété comme un point de code Unicode, ce qui signifie que :
- Les caractères ASCII imprimables sont toujours affichés correctement
- Les caractères UTF-8 multioctets ne s’affichent jamais correctement
- Les caractères UTF-16 s’affichent correctement uniquement si leur octet d’ordre élevé se produit
NUL
.