Format-Hex
将文件或其他输入显示为十六进制。
语法
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>]
说明
              Format-Hex cmdlet 将文件或其他输入显示为十六进制值。 若要确定字符与输出的偏移量,请将行最左侧的数字添加到该字符的列顶部的数字。
              Format-Hex cmdlet 可以帮助你确定损坏的文件或可能没有文件扩展名的文件的文件类型。 可以运行此 cmdlet,然后读取十六进制输出以获取文件信息。
在文件中使用 Format-Hex 时,cmdlet 将忽略换行符,并返回一个字符串中保留换行符的文件的全部内容。
示例
示例 1:获取字符串的十六进制表示形式
此命令返回字符串的十六进制值。
'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
将管道向下发送到  cmdlet 的字符串 Format-Hex。 
              Format-Hex 的十六进制输出显示字符串中每个字符的值。
示例 2:从十六进制输出查找文件类型
此示例使用十六进制输出来确定文件类型。 该 cmdlet 显示文件的完整路径和十六进制值。
若要测试以下命令,请在本地计算机上创建现有 PDF 文件的副本,并将复制的文件重命名为 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
              Format-Hex cmdlet 使用 Path 参数在当前目录中指定文件名,File.t7f。 文件扩展名 .t7f 并不常见,但十六进制输出 %PDF 显示它是 PDF 文件。 在此示例中,Count 参数用于将输出限制为文件的前 48 个字节。
示例 3:设置不同数据类型数组的格式
此示例使用不同数据类型的数组来突出显示 Format-Hex 如何在管道中处理它们。
它将通过管道传递每个对象并单独处理。 但是,如果它是数值数据,并且相邻对象也是数值,它将将它们分组到单个输出块中。
'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                         �
参数
-Count
这表示要包含在十六进制输出中的字节数。
此参数是在 PowerShell 6.2 中引入的。
参数属性
| 类型: | Int64 | 
| 默认值: | Int64.MaxValue | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Encoding
指定输入字符串的编码。 这仅适用于 [string] 输入。 该参数对数值类型没有影响。 输出值始终 utf8NoBOM。
此参数的可接受值如下所示:
- 
              ascii:对 ASCII(7 位)字符集使用编码。
- 
              ansi:对当前区域性的 ANSI 代码页使用编码。 此选项已在 PowerShell 7.4 中添加。
- 
              bigendianunicode:使用大端字节序以 UTF-16 格式进行编码。
- 
              bigendianutf32:使用大端字节顺序以 UTF-32 格式进行编码。
- 
              oem:对 MS-DOS 和控制台程序使用默认编码。
- 
              unicode:使用小端字节序以 UTF-16 格式进行编码。
- 
              utf7:采用 UTF-7 格式编码。
- 
              utf8:采用 UTF-8 格式编码。
- 
              utf8BOM:以 UTF-8 格式编码并附加字节顺序标记(BOM)
- 
              utf8NoBOM:采用不带字节顺序标记(BOM)的 UTF-8 格式进行编码。
- 
              utf32:采用 UTF-32 格式编码。
从 PowerShell 6.2 开始,编码参数 还允许使用注册代码页的数字 ID(如 -Encoding 1251)或注册代码页的字符串名称(如 -Encoding "windows-1251")。 有关详细信息,请参阅 Encoding.CodePage.NET 文档。
从 PowerShell 7.4 开始,可以使用 Ansi 参数的  值来传递当前区域性 ANSI 代码页的数字 ID,而无需手动指定它。
注释
              UTF-7* 不再推荐使用。 从 PowerShell 7.1 起,如果为 utf7 参数指定 ,则会编写警告。
参数属性
| 类型: | Encoding | 
| 默认值: | UTF8NoBOM | 
| 接受的值: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ByInputObject 
					
				  
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-InputObject 
		指定要设置格式的对象。 输入一个包含对象的变量,或键入一个获取对象的命令或表达式。
仅支持某些 标量 类型和 [System.IO.FileInfo]。
支持的标量类型包括:
- 
              [string]、[char]
- 
              [byte]、[sbyte]
- 
              [int16]、[uint16]、[short]、[ushort]
- 
              [int]、[uint]、[int32]、[uint32]、
- 
              [long]、[ulong]、[int64]、[uint64]
- 
              [single]、[float]、[double]
- [boolean]
在 PowerShell 6.2 之前,Format-Hex 通过将所有类似对象组合在一起来处理具有多个输入类型的管道输入。 现在,它处理每个单独的对象,因为它通过管道,并且不会将对象组合在一起,除非像对象相邻一样。
参数属性
| 类型: | PSObject | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ByInputObject 
					
				  
				| Position: | Named | 
| 必需: | True | 
| 来自管道的值: | True | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-LiteralPath 
		指定文件的完整路径。 LiteralPath 的值严格按照所键入的形式使用。 此参数不接受通配符。 若要指定文件的多个路径,请使用逗号分隔路径。 如果 LiteralPath 参数包含转义字符,请将路径括在单引号中。 PowerShell 不会将单引号字符串中的任何字符解释为转义序列。 有关详细信息,请参阅 about_Quoting_Rules。
参数属性
| 类型: | String[] | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
| 别名: | PSPath, LP | 
参数集
					LiteralPath 
					
				 
				| Position: | Named | 
| 必需: | True | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Offset
这表示要从十六进制输出的一部分跳过的字节数。
此参数是在 PowerShell 6.2 中引入的。
参数属性
| 类型: | Int64 | 
| 默认值: | 0 | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Path
指定文件的路径。 使用点(.)指定当前位置。 接受通配符(*),可用于指定位置中的所有项。 如果 Path 参数包括转义字符,请将路径括在单引号中。 若要指定文件的多个路径,请使用逗号分隔路径。
参数属性
| 类型: | String[] | 
| 默认值: | None | 
| 支持通配符: | True | 
| 不显示: | False | 
参数集
Path
| Position: | 0 | 
| 必需: | True | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Raw
此参数不再执行任何作。 它保留为脚本兼容性。
参数属性
| 类型: | SwitchParameter | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ByInputObject 
					
				  
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
CommonParameters
此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters。
输入
String
可以通过管道将字符串传递给此 cmdlet。
输出
ByteCollection
此 cmdlet 返回 ByteCollection。 此对象表示字节集合。 它包括将字节集合转换为字符串的方法,这些字符串的格式类似于 Format-Hex返回的每行输出。 输出还表示正在处理的字节类型。 如果指定 Path 或 LiteralPath 参数,则对象包含包含每个字节的文件的路径。 如果传递字符串、布尔值、整数等,则会相应地标记它。
备注
PowerShell 包含以下与 Format-Hex相关的别名:
- 所有平台:- fhx
 
最右侧的输出列尝试将字节呈现为 ASCII 字符:
通常,每个字节解释为 Unicode 码位,这意味着:
- 始终正确呈现可打印 ASCII 字符
- 多字节 UTF-8 字符永远不会正确呈现
- 仅当出现高阶字节时,UTF-16 字符才会正确呈现 NUL。