Format-Hex
Wyświetla plik lub inne dane wejściowe jako szesnastkowe.
Składnia
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>]
Opis
Polecenie cmdlet Format-Hex wyświetla plik lub inne dane wejściowe jako wartości szesnastkowe. Aby określić przesunięcie znaku z danych wyjściowych, dodaj liczbę z lewej strony wiersza do liczby w górnej części kolumny dla tego znaku.
Polecenie cmdlet Format-Hex może pomóc w ustaleniu typu pliku uszkodzonego pliku lub pliku, który może nie mieć rozszerzenia nazwy pliku. Możesz uruchomić to polecenie cmdlet, a następnie odczytać dane wyjściowe szesnastkowe, aby uzyskać informacje o pliku.
W przypadku używania Format-Hex w pliku polecenie cmdlet ignoruje znaki nowego wiersza i zwraca całą zawartość pliku w jednym ciągu z zachowanymi znakami nowego wiersza.
Przykłady
Przykład 1. Pobieranie szesnastkowej reprezentacji ciągu
To polecenie zwraca wartości szesnastkowe ciągu.
'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
Ciąg Hello World jest wysyłany w dół potoku do polecenia cmdlet Format-Hex. Dane wyjściowe szesnastkowe z Format-Hex pokazują wartości każdego znaku w ciągu.
Przykład 2. Znajdowanie typu pliku z danych wyjściowych szesnastkowe
W tym przykładzie użyto danych wyjściowych szesnastkowe w celu określenia typu pliku. Polecenie cmdlet wyświetla pełną ścieżkę pliku i wartości szesnastkowe.
Aby przetestować następujące polecenie, utwórz kopię istniejącego pliku PDF na komputerze lokalnym i zmień nazwę skopiowanego pliku na 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
Polecenie cmdlet Format-Hex używa parametru ścieżka, aby określić nazwę pliku w bieżącym katalogu, File.t7f. Rozszerzenie pliku .t7f jest nietypowe, ale dane wyjściowe szesnastkowe %PDF pokazują, że jest to plik PDF. W tym przykładzie parametr Count służy do ograniczenia danych wyjściowych do pierwszych 48 bajtów pliku.
Przykład 3. Formatowanie tablicy różnych typów danych
W tym przykładzie użyto tablicy różnych typów danych, aby podkreślić, jak Format-Hex obsługuje je w potoku.
Każdy obiekt będzie przekazywany przez potok i przetwarzać indywidualnie. Jeśli jednak są to dane liczbowe, a sąsiedni obiekt również jest liczbowy, grupuje je w jeden blok wyjściowy.
'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 �
Parametry
-Count
Reprezentuje to liczbę bajtów do uwzględnienia w danych wyjściowych szesnastkowy.
Ten parametr został wprowadzony w programie PowerShell 6.2.
Właściwości parametru
| Typ: | Int64 |
| Domyślna wartość: | Int64.MaxValue |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Encoding
Określa kodowanie ciągów wejściowych. Dotyczy to tylko [string] danych wejściowych. Parametr nie ma wpływu na typy liczbowe. Wartość wyjściowa jest zawsze utf8NoBOM.
Dopuszczalne wartości tego parametru są następujące:
-
ascii: używa kodowania zestawu znaków ASCII (7-bitowych). -
ansi: używa kodowania strony kodowej ANSI dla bieżącej kultury. Ta opcja została dodana w programie PowerShell 7.4. -
bigendianunicode: Koduje w formacie UTF-16 wykorzystując porządek bajtów big-endian. -
bigendianutf32: Koduje w formacie UTF-32 przy użyciu kolejności bajtów big-endian. -
oem: używa domyślnego kodowania dla programów MS-DOS i konsoli. -
unicode: Koduje w formacie UTF-16, używając układu bajtów little-endian. -
utf7: koduje w formacie UTF-7. -
utf8: koduje w formacie UTF-8. -
utf8BOM: koduje w formacie UTF-8 za pomocą znacznika kolejności bajtów (BOM) -
utf8NoBOM: Koduje w formacie UTF-8, nie używając znacznika kolejności bajtów (BOM) -
utf32: koduje w formacie UTF-32.
Począwszy od programu PowerShell 6.2, w parametrze Kodowanie można używać również numerycznych identyfikatorów zarejestrowanych stron kodu (na przykład -Encoding 1251) lub nazw tekstowych zarejestrowanych stron kodu (na przykład -Encoding "windows-1251"). Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET dotyczącą Encoding.CodePage.
Począwszy od programu PowerShell 7.4, można użyć wartości
Uwaga / Notatka
UTF-7* nie jest już zalecane do użycia. Od wersji PowerShell 7.1 zapisywane jest ostrzeżenie, jeśli określisz utf7 dla parametru kodowania .
Właściwości parametru
| Typ: | Encoding |
| Domyślna wartość: | UTF8NoBOM |
| Dopuszczalne wartości: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ByInputObject
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-InputObject
Określa obiekty, które mają być sformatowane. Wprowadź zmienną zawierającą obiekty lub wpisz polecenie lub wyrażenie, które pobiera obiekty.
Obsługiwane są tylko niektóre typy skalarnych.
Obsługiwane typy skalarne to:
-
[string],[char] -
[byte],[sbyte] -
[int16], ,[uint16], ,[short][ushort] -
[int], ,[uint],[int32], ,[uint32] -
[long], ,[ulong], ,[int64][uint64] -
[single], ,[float][double] [boolean]
Przed programem PowerShell 6.2 Format-Hex obsługiwać dane wejściowe potoku z wieloma typami wejściowymi, grupując wszystkie obiekty podobne do siebie. Teraz obsługuje każdy pojedynczy obiekt podczas przechodzenia przez potok i nie grupuje obiektów, chyba że obiekty podobne są sąsiadujące.
Właściwości parametru
| Typ: | PSObject |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ByInputObject
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-LiteralPath
Określa pełną ścieżkę do pliku. Wartość LiteralPath jest używana dokładnie tak, jak jest typowana. Ten parametr nie akceptuje symboli wieloznacznych. Aby określić wiele ścieżek do plików, rozdziel ścieżki przecinkami. Jeśli parametr LiteralPath zawiera znaki ucieczki, należy ująć ścieżkę w znaki pojedynczego cudzysłowu. Program PowerShell nie interpretuje żadnych znaków w jednym cytowanym ciągu jako sekwencjach ucieczki. Aby uzyskać więcej informacji, zobacz about_Quoting_Rules.
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | PSPath, LP |
Zestawy parametrów
LiteralPath
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Offset
Reprezentuje to liczbę bajtów do pominięcia z bycia częścią danych wyjściowych szesnastka.
Ten parametr został wprowadzony w programie PowerShell 6.2.
Właściwości parametru
| Typ: | Int64 |
| Domyślna wartość: | 0 |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Path
Określa ścieżkę do plików. Użyj kropki (.), aby określić bieżącą lokalizację. Symbol wieloznaczny (*) jest akceptowany i może służyć do określania wszystkich elementów w lokalizacji. Jeśli parametr ścieżki zawiera znaki ucieczki, należy ująć ścieżkę w znaki pojedynczego cudzysłowu. Aby określić wiele ścieżek do plików, rozdziel ścieżki przecinkami.
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | True |
| DontShow: | False |
Zestawy parametrów
Path
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Raw
Ten parametr już nic nie robi. Jest on zachowywany w celu zachowania zgodności skryptów.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ByInputObject
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CommonParameters
To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Dane wejściowe
String
Możesz przesłać ciąg do tego polecenia cmdlet.
Dane wyjściowe
ByteCollection
To polecenie cmdlet zwraca ByteCollection. Ten obiekt reprezentuje kolekcję bajtów. Zawiera metody, które konwertują kolekcję bajtów na ciąg sformatowany tak jak każdy wiersz danych wyjściowych zwracanych przez Format-Hex. Dane wyjściowe zawierają również typ przetwarzanych bajtów. Jeśli określisz parametr ścieżki lub LiteralPath, obiekt zawiera ścieżkę pliku zawierającego każdy bajt. Jeśli przekażesz ciąg, wartość logiczną, liczbę całkowitą itp., zostanie ona odpowiednio oznaczona etykietą.
Uwagi
Program PowerShell zawiera następujące aliasy dla Format-Hex:
- Wszystkie platformy:
fhx
Prawa kolumna danych wyjściowych próbuje renderować bajty jako znaki ASCII:
Ogólnie rzecz biorąc każdy bajt jest interpretowany jako punkt kodu Unicode, co oznacza, że:
- Znaki ASCII z możliwością drukowania są zawsze poprawnie renderowane
- Wiele bajtów UTF-8 znaków nigdy nie renderuje poprawnie
- Znaki UTF-16 są renderowane poprawnie tylko wtedy, gdy ich bajt o wysokiej kolejności występuje
NUL.