Dela via


Format-Hex

Visar en fil eller andra indata som hexadecimala.

Syntax

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

Description

Cmdleten Format-Hex visar en fil eller andra indata som hexadecimala värden. För att fastställa förskjutningen av ett tecken från utdata lägger du till talet längst till vänster på raden till talet överst i kolumnen för det tecknet.

Cmdleten Format-Hex kan hjälpa dig att fastställa filtypen för en skadad fil eller en fil som kanske inte har filnamnstillägget. Du kan köra den här cmdleten och sedan läsa hexadecimala utdata för att hämta filinformation.

När du använder Format-Hex på en fil ignorerar cmdleten nya radtecken och returnerar hela innehållet i en fil i en sträng med de nya raderna bevarade.

Exempel

Exempel 1: Hämta hexadecimal representation av en sträng

Det här kommandot returnerar hexadecimala värden för en sträng.

'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

Strängen Hello World skickas ned i pipelinen till cmdleten Format-Hex. Hexadecimala utdata från Format-Hex visar värdena för varje tecken i strängen.

Exempel 2: Hitta en filtyp från hexadecimala utdata

I det här exemplet används hexadecimala utdata för att fastställa filtypen. Cmdleten visar filens fullständiga sökväg och hexadecimala värden.

Testa följande kommando genom att göra en kopia av en befintlig PDF-fil på den lokala datorn och byta namn på den kopierade filen till 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

Cmdleten Format-Hex använder parametern Path för att ange ett filnamn i den aktuella katalogen File.t7f. Filnamnstillägget .t7f är ovanligt, men hexadecimala utdata %PDF visar att det är en PDF-fil. I det här exemplet används parametern Count för att begränsa utdata till de första 48 byteen i filen.

Exempel 3: Formatera en matris med olika datatyper

I det här exemplet används en matris med olika datatyper för att markera hur Format-Hex hanterar dem i pipelinen.

Varje objekt skickas via pipelinen och bearbetas individuellt. Men om det är numeriska data och det intilliggande objektet också är numeriskt grupperas de i ett enda utdatablock.

'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                         �

Parametrar

-Count

Detta representerar antalet byte som ska inkluderas i hexutdata.

Den här parametern introducerades i PowerShell 6.2.

Parameteregenskaper

Typ:Int64
Standardvärde:Int64.MaxValue
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Encoding

Anger kodningen av indatasträngarna. Detta gäller endast för [string] inmatning. Parametern har ingen effekt på numeriska typer. Utdatavärdet är alltid utf8NoBOM.

Godkända värden för den här parametern är följande:

  • ascii: Använder kodningen för ASCII-teckenuppsättningen (7-bitars).
  • ansi: Använder kodningen för den aktuella kulturens ANSI-kodsida. Det här alternativet lades till i PowerShell 7.4.
  • bigendianunicode: Kodar i UTF-16-format med hjälp av storstavelseordningen.
  • bigendianutf32: Kodar i UTF-32-format med big-endian-byteordning.
  • oem: Använder standardkodning för MS-DOS- och konsolprogram.
  • unicode: Kodar i UTF-16-format med hjälp av lite endiansk byteordning.
  • utf7: Kodar i UTF-7-format.
  • utf8: Kodar i UTF-8-format.
  • utf8BOM: Kodar i UTF-8-format med Byte Order Mark (BOM)
  • utf8NoBOM: Kodar i UTF-8-format utan Byte Order Mark (BOM)
  • utf32: Kodar i UTF-32-format.

Från och med PowerShell 6.2 tillåter parametern Kodning även numeriska ID:n för registrerade kodsidor (till exempel -Encoding 1251) eller strängnamn för registrerade kodsidor (till exempel -Encoding "windows-1251"). Mer information finns i .NET-dokumentationen för Encoding.CodePage.

Från och med PowerShell 7.4 kan du använda värdet Ansi för parametern Kodning för att skicka det numeriska ID:t för den aktuella kulturens ANSI-kodsida utan att behöva ange det manuellt.

Anmärkning

UTF-7* rekommenderas inte längre att användas. Från och med PowerShell 7.1 skrivs en varning om du anger utf7 för parametern Kodning.

Parameteregenskaper

Typ:Encoding
Standardvärde:UTF8NoBOM
Godkända värden:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

ByInputObject
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-InputObject

Anger vilka objekt som ska formateras. Ange en variabel som innehåller objekten eller skriv ett kommando eller uttryck som hämtar objekten.

Endast vissa skalär typer och [System.IO.FileInfo] stöds.

Skalära typer som stöds är:

  • [string], [char]
  • [byte], [sbyte]
  • [int16], [uint16], , [short][ushort]
  • [int], [uint], [int32], , , [uint32]
  • [long], [ulong], , [int64][uint64]
  • [single], , [float][double]
  • [boolean]

Före PowerShell 6.2 skulle Format-Hex hantera en pipelineindata med flera indatatyper genom att gruppera alla liknande objekt. Nu hanterar den varje enskilt objekt när det passerar genom pipelinen och grupperar inte objekt tillsammans om inte liknande objekt ligger intill varandra.

Parameteregenskaper

Typ:PSObject
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

ByInputObject
Position:Named
Obligatorisk:True
Värde från pipeline:True
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-LiteralPath

Anger den fullständiga sökvägen till en fil. Värdet för LiteralPath används exakt som det skrivs. Den här parametern accepterar inte jokertecken. Om du vill ange flera sökvägar till filer separerar du sökvägarna med ett kommatecken. Om parametern LiteralPath innehåller escape-tecken omger du sökvägen inom enkla citattecken. PowerShell tolkar inte några tecken i en enda citerad sträng som escape-sekvenser. Mer information finns i about_Quoting_Rules.

Parameteregenskaper

Typ:

String[]

Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:PSPath, SP

Parameteruppsättningar

LiteralPath
Position:Named
Obligatorisk:True
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Offset

Detta representerar antalet byte som ska hoppa från att ingå i hex-utdata.

Den här parametern introducerades i PowerShell 6.2.

Parameteregenskaper

Typ:Int64
Standardvärde:0
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Path

Anger sökvägen till filer. Använd en punkt (.) för att ange den aktuella platsen. Jokertecknet (*) accepteras och kan användas för att ange alla objekt på en plats. Om parametern Path innehåller escape-tecken omger du sökvägen inom enkla citattecken. Om du vill ange flera sökvägar till filer separerar du sökvägarna med ett kommatecken.

Parameteregenskaper

Typ:

String[]

Standardvärde:None
Stöder jokertecken:True
DontShow:False

Parameteruppsättningar

Path
Position:0
Obligatorisk:True
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Raw

Den här parametern gör inte längre något. Den behålls för skriptkompatibilitet.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

ByInputObject
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

CommonParameters

Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.

Indata

String

Du kan skicka en sträng till den här cmdleten.

Utdata

ByteCollection

Den här cmdleten returnerar en ByteCollection (). Det här objektet representerar en samling byte. Den innehåller metoder som konverterar bytsamlingen till en sträng formaterad som varje rad med utdata från Format-Hex. Utdata anger också vilken typ av byte som bearbetas. Om du anger parametern Path eller LiteralPath innehåller objektet sökvägen till filen som innehåller varje byte. Om du skickar en sträng, ett booleskt värde, ett heltal osv., kommer det att etiketteras korrekt.

Kommentarer

PowerShell innehåller följande alias för Format-Hex:

  • Alla plattformar:
    • fhx

Den högra kolumnen med utdata försöker återge bytena som ASCII-tecken:

I allmänhet tolkas varje byte som en Unicode-kodpunkt, vilket innebär att:

  • Utskrivbara ASCII-tecken återges alltid korrekt
  • Utf-8 tecken med flera byte återges aldrig korrekt
  • UTF-16 tecken återges korrekt endast om den högre ordningen av byte är NUL.