Format-Hex
Zeigt eine Datei oder eine andere Eingabe als Hexadezimal an.
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>]
Beschreibung
Das Format-Hex
Cmdlet zeigt eine Datei oder eine andere Eingabe als Hexadezimalwerte an. Um den Offset eines Zeichens aus der Ausgabe zu bestimmen, fügen Sie die Zahl am äußersten linken Rand der Zeile der Zahl oben in der Spalte für dieses Zeichen hinzu.
Das Format-Hex
Cmdlet kann Ihnen helfen, den Dateityp einer beschädigten Datei oder einer Datei zu bestimmen, die möglicherweise keine Dateinamenerweiterung hat. Sie können dieses Cmdlet ausführen und dann die hexadezimale Ausgabe lesen, um Dateiinformationen abzurufen.
Bei verwendung Format-Hex
für eine Datei ignoriert das Cmdlet Zeilenumbruchzeichen und gibt den gesamten Inhalt einer Datei in einer Zeichenfolge zurück, wobei die Zeilenumbruchzeichen beibehalten werden.
Beispiele
Beispiel 1: Abrufen der hexadezimalen Darstellung einer Zeichenfolge
Dieser Befehl gibt die Hexadezimalwerte einer Zeichenfolge zurück.
'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
Die Zeichenfolge Hallo Welt wird über die Pipeline an das Format-Hex
Cmdlet gesendet. Die hexadezimale Ausgabe von Format-Hex
zeigt die Werte der einzelnen Zeichen in der Zeichenfolge an.
Beispiel 2: Suchen eines Dateityps aus der hexadezimalen Ausgabe
In diesem Beispiel wird die hexadezimale Ausgabe verwendet, um den Dateityp zu bestimmen. Das Cmdlet zeigt den vollständigen Pfad der Datei und die Hexadezimalwerte an.
Um den folgenden Befehl zu testen, erstellen Sie eine Kopie einer vorhandenen PDF-Datei auf Ihrem lokalen Computer, und benennen Sie die kopierte Datei in um 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
Das Format-Hex
Cmdlet verwendet den Path-Parameter, um einen Dateinamen im aktuellen Verzeichnis anzugeben. File.t7f
Die Dateierweiterung .t7f
ist ungewöhnlich, aber die hexadezimale Ausgabe %PDF
zeigt, dass es sich um eine PDF-Datei handelt. In diesem Beispiel wird der Count-Parameter verwendet, um die Ausgabe auf die ersten 48 Bytes der Datei zu beschränken.
Beispiel 3: Formatieren eines Arrays verschiedener Datentypen
In diesem Beispiel wird ein Array verschiedener Datentypen verwendet, um hervorzuheben, wie Format-Hex
diese in der Pipeline behandelt werden.
Jedes Objekt wird einzeln über die Pipeline und den Prozess übergeben. Wenn es sich jedoch um numerische Daten handelt und das angrenzende Objekt ebenfalls numerisch ist, werden sie in einem einzelnen Ausgabeblock gruppiert.
'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 �
Parameter
-Count
Dies stellt die Anzahl der Bytes dar, die in die Hexadezimausgabe eingeschlossen werden sollen.
Dieser Parameter wurde in PowerShell 6.2 eingeführt.
Type: | Int64 |
Position: | Named |
Default value: | Int64.MaxValue |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Gibt die Codierung der Eingabezeichenfolgen an. Dies gilt nur für Eingaben [string]
. Der Parameter hat keine Auswirkungen auf numerische Typen. Der Ausgabewert ist immer utf8NoBOM
.
Die zulässigen Werte für diesen Parameter sind wie folgt:
ascii
: Verwendet die Codierung für den ASCII-Zeichensatz (7-Bit).bigendianunicode
: Codiert im UTF-16-Format mit der Big-Endian-Bytereihenfolge.bigendianutf32
: Codiert im UTF-32-Format mit der Big-Endian-Bytereihenfolge.oem
: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme.unicode
: Codiert im UTF-16-Format unter Verwendung der Little-Endian-Bytereihenfolge.utf7
: Codiert im UTF-7-Format.utf8
: Codiert im UTF-8-Format.utf8BOM
: Codiert im UTF-8-Format mit Byte Order Mark (BOM)utf8NoBOM
: Codiert im UTF-8-Format ohne Byte order Mark (BOM)utf32
: Codiert im UTF-32-Format.
Ab PowerShell 6.2 lässt der Encoding-Parameter auch numerische IDs registrierter Codepages (z. B -Encoding 1251
. ) oder Zeichenfolgennamen von registrierten Codepages (z. B -Encoding "windows-1251"
. ) zu. Weitere Informationen finden Sie in der .NET-Dokumentation für Encoding.CodePage.
Hinweis
UTF-7* wird nicht mehr empfohlen. Ab PowerShell 7.1 wird eine Warnung ausgegeben, wenn Sie für den Encoding-Parameter angebenutf7
.
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
Gibt die zu formatierenden Objekte an. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder einen Ausdruck ein, durch den die Objekte abgerufen werden.
Nur bestimmte Skalartypen und [system.io.fileinfo]
werden unterstützt.
Folgende Skalartypen werden unterstützt:
[string]
,[char]
[byte]
,[sbyte]
[int16]
,[uint16]
,[short]
,[ushort]
[int]
,[uint]
,[int32]
,[uint32]
,[long]
,[ulong]
,[int64]
,[uint64]
[single]
,[float]
,[double]
[boolean]
Vor PowerShell 6.2 wurde eine Pipelineeingabe mit mehreren Eingabetypen verarbeitet, Format-Hex
indem alle ähnlichen Objekte gruppiert wurden. Jetzt behandelt es jedes einzelne Objekt, während es die Pipeline durchläuft, und gruppiert keine Objekte, es sei denn, objekte sind nebeneinander.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Gibt den vollständigen Pfad zu einer Datei an. Der Wert von LiteralPath wird genau so verwendet, wie er eingegeben wird. Dieser Parameter akzeptiert keine Platzhalterzeichen. Um mehrere Pfade für Dateien anzugeben, trennen Sie die Pfade durch ein Komma. Wenn der LiteralPath-Parameter Escapezeichen enthält, schließen Sie den Pfad in einfache Anführungszeichen ein. PowerShell interpretiert keine Zeichen in einer einzelnen Zeichenfolge in Anführungszeichen als Escapesequenzen. Weitere Informationen finden Sie unter about_Quoting_Rules.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Offset
Dies stellt die Anzahl der Bytes dar, die nicht Teil der Hexadezimausgabe sein sollen.
Dieser Parameter wurde in PowerShell 6.2 eingeführt.
Type: | Int64 |
Position: | Named |
Default value: | 0 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Gibt den Pfad zu Dateien an. Verwenden Sie einen Punkt (.
), um die aktuelle Position anzugeben. Das Wildcardzeichen (*
) wird akzeptiert und kann verwendet werden, um alle Elemente an einem Speicherort anzugeben. Wenn der Path-Parameter Escapezeichen enthält, schließen Sie den Pfad in einfache Anführungszeichen ein. Um mehrere Pfade für Dateien anzugeben, trennen Sie die Pfade durch ein Komma.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Raw
Mit diesem Parameter wird nichts mehr ausgeführt. Sie wird aus Gründen der Skriptkompatibilität beibehalten.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
Sie können eine Zeichenfolge an dieses Cmdlet übergeben.
Ausgaben
Dieses Cmdlet gibt eine ByteCollection zurück. Dieses Objekt stellt eine Auflistung von Bytes dar. Es enthält Methoden, die die Auflistung von Bytes in eine Zeichenfolge konvertieren, die wie jede Ausgabezeile formatiert ist, die von zurückgegeben wird Format-Hex
. In der Ausgabe wird auch angegeben, dass der Typ der verarbeiteten Bytes ist. Wenn Sie den Path - oder LiteralPath-Parameter angeben, enthält das Objekt den Pfad der Datei, die jedes Byte enthält. Wenn Sie eine Zeichenfolge, einen booleschen Wert, eine ganze Zahl usw. übergeben, wird sie entsprechend bezeichnet.
Hinweise
PowerShell enthält die folgenden Aliase für Format-Hex
:
- Alle Plattformen:
fhx
Die Ausgabespalte ganz rechts versucht, die Bytes als ASCII-Zeichen zu rendern:
Im Allgemeinen wird jedes Byte als Unicode-Codepunkt interpretiert, was bedeutet, dass:
- Druckbare ASCII-Zeichen werden immer ordnungsgemäß gerendert
- Utf-8-Zeichen mit mehreren Byte werden nie richtig gerendert
- UTF-16-Zeichen werden nur ordnungsgemäß gerendert, wenn ihr Byte in hoher Reihenfolge ist
NUL
.