Format-Hex
ファイルまたはその他の入力を 16 進数で表示します。
構文
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 コマンドレットは、ファイルまたはその他の入力を 16 進数の値として表示します。 出力からの文字のオフセットを決定するには、行の左端にある数値を、その文字の列の先頭にある数値に追加します。
Format-Hex コマンドレットを使用すると、破損したファイルのファイルの種類や、ファイル名拡張子がない可能性があるファイルを特定できます。 このコマンドレットを実行し、16 進数の出力を読み取ってファイル情報を取得できます。
ファイルで Format-Hex を使用する場合、コマンドレットは改行文字を無視し、改行文字が保持されたファイルの内容全体を 1 つの文字列で返します。
例
例 1: 文字列の 16 進数表現を取得する
このコマンドは、文字列の 16 進値を返します。
'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
Hello World 文字列は、パイプラインから Format-Hex コマンドレットに送信されます。
Format-Hex からの 16 進数の出力には、文字列内の各文字の値が表示されます。
例 2: 16 進数の出力からファイルの種類を検索する
この例では、16 進数の出力を使用してファイルの種類を決定します。 コマンドレットは、ファイルの完全なパスと 16 進数の値を表示します。
次のコマンドをテストするには、ローカル コンピューター上の既存の 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 コマンドレットは、Path パラメーターを使用して、現在のディレクトリ内のファイル名を指定 File.t7f。 ファイル拡張子 .t7f は一般的ではありませんが、16 進数の出力 %PDF は PDF ファイルであることを示しています。 この例では、Count パラメーターを使用して、出力をファイルの最初の 48 バイトに制限します。
例 3: さまざまなデータ型の配列を書式設定する
この例では、さまざまなデータ型の配列を使用して、パイプラインでデータ型 Format-Hex 処理方法を強調表示します。
各オブジェクトがパイプラインを通過し、個別に処理されます。 ただし、数値データであり、隣接するオブジェクトも数値である場合は、それらを 1 つの出力ブロックにグループ化します。
'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
これは、16 進出力に含めるバイト数を表します。
このパラメーターは、PowerShell 6.2 で導入されました。
パラメーターのプロパティ
| 型: | Int64 |
| 規定値: | Int64.MaxValue |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | 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: バイト オーダー マーク (BOM) を使用して UTF-8 形式でエンコードします。 -
utf8NoBOM: バイト オーダー マーク (BOM) なしで UTF-8 形式でエンコードします -
utf32: UTF-32 形式でエンコードします。
PowerShell 6.2 以降では、Encoding パラメーターを使用すると、登録済みのコード ページ (-Encoding 1251など) の数値 ID や、登録されたコード ページの文字列名 (-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 |
| DontShow: | False |
パラメーター セット
ByInputObject
| 配置: | 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 |
| DontShow: | False |
パラメーター セット
ByInputObject
| 配置: | Named |
| 必須: | True |
| パイプラインからの値: | True |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-LiteralPath
ファイルへの完全なパスを指定します。 LiteralPath の値は、入力されたとおりにそのまま使用されます。 このパラメーターはワイルドカード文字を受け入れません。 ファイルへの複数のパスを指定するには、パスをコンマで区切ります。 LiteralPath パラメーターにエスケープ文字が含まれている場合は、パスを単一引用符で囲みます。 PowerShell では、単一引用符で囲まれた文字列内の文字はエスケープ シーケンスとして解釈されません。 詳細については、about_Quoting_Rulesを参照してください。
パラメーターのプロパティ
| 型: | String[] |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | PSPath, LP |
パラメーター セット
LiteralPath
| 配置: | Named |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Offset
これは、16 進出力の一部からスキップするバイト数を表します。
このパラメーターは、PowerShell 6.2 で導入されました。
パラメーターのプロパティ
| 型: | Int64 |
| 規定値: | 0 |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Path
ファイルへのパスを指定します。 現在の場所を指定するには、ドット (.) を使用します。 ワイルドカード文字 (*) は受け入れられ、場所内のすべての項目を指定するために使用できます。
Path パラメーターにエスケープ文字が含まれている場合は、パスを単一引用符で囲みます。 ファイルへの複数のパスを指定するには、パスをコンマで区切ります。
パラメーターのプロパティ
| 型: | String[] |
| 規定値: | None |
| ワイルドカードのサポート: | True |
| DontShow: | False |
パラメーター セット
Path
| 配置: | 0 |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Raw
このパラメーターは何も実行しなくなりました。 スクリプトの互換性のために保持されます。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
ByInputObject
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
CommonParameters
このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。
入力
String
このコマンドレットに文字列をパイプできます。
出力
ByteCollection
このコマンドレットは、ByteCollectionを返します。 このオブジェクトは、バイトのコレクションを表します。 これには、バイトのコレクションを、Format-Hexによって返される出力の各行のように書式設定された文字列に変換するメソッドが含まれています。 出力には、処理されているバイトの型も示されます。
Path または LiteralPath パラメーター 指定した場合、オブジェクトには各バイトを含むファイルのパスが含まれます。 文字列、ブール値、整数などを渡すと、適切なラベルが付けられます。
メモ
PowerShell には、Format-Hexの次のエイリアスが含まれています。
- すべてのプラットフォーム:
fhx
出力の右端の列は、バイトを ASCII 文字としてレンダリングしようとします。
一般に、各バイトは Unicode コード ポイントとして解釈されます。これは、次のことを意味します。
- 印刷可能な ASCII 文字が常に正しくレンダリングされる
- マルチバイト UTF-8 文字が正しくレンダリングされない
- UTF-16 文字は、高次バイトが
NUL場合にのみ正しくレンダリングされます。