次の方法で共有


Format-Hex

ファイルまたはその他の入力を 16 進数で表示します。

構文

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>]

説明

コマンドレットは 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送信されます。 からの 16 進数の出力 Format-Hex は、文字列内の各文字の値を示しています。

例 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 で導入されました。

Type:Int64
Position:Named
Default value:Int64.MaxValue
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

入力文字列のエンコードを指定します。 これは入力にのみ適用されます [string] 。 パラメーターは数値型には影響しません。 出力値は常に utf8NoBOMです。

このパラメーターに使用できる値は次のとおりです。

  • ascii: ASCII (7 ビット) 文字セットのエンコードを使用します。
  • 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 パラメーターを使用すると、登録済みコード ページの数値 ID (など -Encoding 1251) または登録済みコード ページの文字列名 (など -Encoding "windows-1251") も許可されます。 詳細については、 Encoding.CodePage の .NET ドキュメントを参照してください。

注意

UTF-7* の使用は推奨されなくなりました。 PowerShell 7.1 以降では、Encoding パラメーターに を指定utf7すると警告が書き込まれます。

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

書式設定するオブジェクトを指定します。 オブジェクトが格納されている変数を入力するか、オブジェクトを取得するコマンドまたは式を入力します。

サポートされているのは、特定のスカラー型と [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 複数の入力型を持つパイプライン入力を処理していました。 これで、パイプラインを通過する各オブジェクトが処理され、like オブジェクトが隣接していない限り、オブジェクトはグループ化されません。

Type:PSObject
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

ファイルへの完全なパスを指定します。 LiteralPath の値は、型指定されたとおりに使用されます。 このパラメーターはワイルドカード文字を使用できません。 ファイルへの複数のパスを指定するには、パスをコンマで区切ります。 LiteralPath パラメーターにエスケープ文字が含まれている場合は、パスを単一引用符で囲みます。 PowerShell では、単一引用符で囲まれた文字列内の文字はエスケープ シーケンスとして解釈されません。 詳細については、「 about_Quoting_Rules」を参照してください。

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Offset

これは、16 進出力の一部からスキップするバイト数を表します。

このパラメーターは、PowerShell 6.2 で導入されました。

Type:Int64
Position:Named
Default value:0
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

ファイルへのパスを指定します。 現在の場所を指定するには、ドット (.) を使用します。 ワイルドカード文字 (*) は受け入れられ、場所内のすべての項目を指定するために使用できます。 Path パラメーターにエスケープ文字が含まれている場合は、パスを単一引用符で囲みます。 ファイルへの複数のパスを指定するには、パスをコンマで区切ります。

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-Raw

このパラメーターは何も行われません。 スクリプトの互換性のために保持されます。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

String

このコマンドレットに文字列をパイプできます。

出力

ByteCollection

このコマンドレットは ByteCollection を返します。 このオブジェクトは、バイトのコレクションを表します。 これには、 によって返される出力の各行のように書式設定された文字列にバイトのコレクションを変換するメソッドが Format-Hex含まれています。 出力には、処理されるバイトの種類も示されます。 Path または LiteralPath パラメーターを指定した場合、オブジェクトには各バイトを含むファイルのパスが含まれます。 文字列、ブール値、整数などを渡すと、適切なラベルが付けられます。

メモ

出力の右端の列は、バイトを ASCII 文字としてレンダリングしようとします。

一般に、各バイトは Unicode コード ポイントとして解釈されます。つまり、次のことを意味します。

  • 印刷可能な ASCII 文字は常に正しくレンダリングされます
  • マルチバイト UTF-8 文字が正しくレンダリングされない
  • UTF-16 文字は、高次バイトが である場合にのみ正しくレンダリングされます NUL