Megosztás a következőn keresztül:


about_Format.ps1xml

Rövid leírás

A PowerShell 6-tól kezdődően az objektumok alapértelmezett nézetei a PowerShell-forráskódban vannak definiálva.

Létrehozhat saját Format.ps1xml fájlokat az objektumok megjelenítésének módosításához vagy a PowerShellben létrehozott új objektumtípusok alapértelmezett megjelenítésének meghatározásához.

Hosszú leírás

A PowerShell 6-tól kezdődően az alapértelmezett nézetek a PowerShell-forráskódban vannak definiálva. A Format.ps1xml PowerShell 5.1- és korábbi verzióiból származó fájlok nem léteznek a PowerShell 6-os és újabb verzióiban.

A PowerShell-forráskód határozza meg az objektumok alapértelmezett megjelenítését a PowerShell-konzolon. Létrehozhat saját Format.ps1xml fájlokat az objektumok megjelenítésének módosításához vagy a PowerShellben létrehozott új objektumtípusok alapértelmezett megjelenítésének meghatározásához.

Amikor a PowerShell megjelenít egy objektumot, strukturált formázási fájlokban lévő adatokat használ az objektum alapértelmezett megjelenítésének meghatározásához. A formázási fájlok adatai határozzák meg, hogy az objektum egy táblában vagy egy listában jelenik-e meg, és meghatározza, hogy mely tulajdonságok jelenjenek meg alapértelmezés szerint.

A formázás csak a megjelenítésre van hatással. Ez nem befolyásolja, hogy mely objektumtulajdonságok vannak átadva a csővezetéken, vagy hogyan vannak átadva. Format.ps1xml fájlok nem használhatók a kivonattáblák kimeneti formátumának testreszabására.

Egy .ps1xml formázási fájl négy különböző nézetet definiálhat az egyes objektumokról:

  • Asztal
  • Lista
  • Széles
  • Szokás

Ha például egy Get-ChildItem parancs kimenete egy Format-List parancsra van állítva, Format-List a forráskódban definiált listanézettel határozza meg, hogyan jeleníthető meg listaként a fájl- és mappaobjektumok.

Ha egy formázási fájl egy objektum több nézetét is tartalmazza, a PowerShell az első talált nézetet alkalmazza.

Az egyéni Format.ps1xml fájlokban a nézetet XML-címkék halmaza határozza meg, amelyek a nézet nevét, az alkalmazható objektum típusát, az oszlopfejléceket és a nézet törzsében megjelenő tulajdonságokat írják le. A Format.ps1xml fájlok formátuma az adatok felhasználónak való megjelenítése előtt lesz alkalmazva.

Új Format.ps1xml-fájlok létrehozása

Meglévő objektumnézet megjelenítési formátumának módosításához vagy új objektumok nézeteinek hozzáadásához hozzon létre saját Format.ps1xml fájlokat, majd vegye fel őket a PowerShell-munkamenetbe.

Ha egyéni nézet definiálásához Format.ps1xml fájlt szeretne létrehozni, használja a Get-FormatData és Export-FormatData parancsmagokat. A fájl szerkesztéséhez használjon szövegszerkesztőt. A fájl bármely olyan könyvtárba menthető, amelyhez a PowerShell hozzáférhet, például a $HOMEalkönyvtárába.

Az aktuális nézet formázásának módosításához keresse meg a nézetet a formázási fájlban, majd a címkék használatával módosítsa a nézetet. Új objektumtípus nézetének létrehozásához hozzon létre egy új nézetet, vagy használjon egy meglévő nézetet modellként. A címkéket a következő szakaszban ismertetjük. Ezután törölheti a fájl összes többi nézetét, hogy a módosítások mindenki számára nyilvánvalóak legyenek, aki megvizsgálja a fájlt.

A módosítások mentése után az Update-FormatData használatával adja hozzá az új fájlt a PowerShell-munkamenethez. Ha azt szeretné, hogy a nézet elsőbbséget élvezjen a beépített fájlokban definiált nézetnél, használja a PrependPath paramétert. Update-FormatData csak az aktuális munkamenetre van hatással. Az összes jövőbeli munkamenet módosításához adja hozzá a Update-FormatData parancsot a PowerShell-profiljához.

Példa: Naptáradatok hozzáadása kulturális objektumokhoz

Ez a példa bemutatja, hogyan módosíthatja a System.Globalization.CultureInfo a Get-Culture-parancsmag által az aktuális PowerShell-munkamenetben létrehozott kulturális objektumok formázását. A példában szereplő parancsok hozzáadják a Naptár tulajdonságot a kulturális objektumok alapértelmezett táblanézet-megjelenítéséhez.

Első lépésként kérje le a formátumadatokat a forráskódfájlból, és hozzon létre egy Format.ps1xml fájlt, amely a kulturális objektumok aktuális nézetét tartalmazza.

New-Item -Path $HOME\Format -ItemType Directory -Force

Get-FormatData -TypeName System.Globalization.CultureInfo |
  Export-FormatData -LiteralPath $HOME\Format\CultureInfo.Format.ps1xml

Nyissa meg a CultureInfo.Format.ps1xml fájlt bármely XML- vagy szövegszerkesztőben, például a Visual Studio Code-ban. Az alábbi XML a CultureInfo objektum nézeteit határozza meg.

A CultureInfo.Format.ps1xml fájlnak a következő példához hasonlóan kell kinéznie:

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
  <ViewDefinitions>
    <View>
      <Name>System.Globalization.CultureInfo</Name>
      <ViewSelectedBy>
        <TypeName>System.Globalization.CultureInfo</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Width>16</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Width>16</Width>
          </TableColumnHeader>
          <TableColumnHeader />
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>LCID</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Name</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>DisplayName</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
  </ViewDefinitions>
</Configuration>

Hozzon létre egy új oszlopot a Naptár tulajdonsághoz új <TableColumnHeader> címkék hozzáadásával. A Naptár tulajdonság értéke hosszú lehet, ezért adjon meg 45 karakteres értéket a <Width>.

<TableHeaders>
  <TableColumnHeader>
    <Width>16</Width>
  </TableColumnHeader>
  <TableColumnHeader>
    <Width>16</Width>
  </TableColumnHeader>
  <TableColumnHeader>
    <Width>45</Width>
  </TableColumnHeader>
  <TableColumnHeader/>
</TableHeaders>

Adjon hozzá egy új oszlopelemet Naptár a táblázat soraihoz a <TableColumnItem> és <PropertyName címkékkel:

<TableRowEntries>
  <TableRowEntry>
    <TableColumnItems>
      <TableColumnItem>
        <PropertyName>LCID</PropertyName>
      </TableColumnItem>
      <TableColumnItem>
        <PropertyName>Name</PropertyName>
      </TableColumnItem>
      <TableColumnItem>
        <PropertyName>Calendar</PropertyName>
      </TableColumnItem>
      <TableColumnItem>
        <PropertyName>DisplayName</PropertyName>
      </TableColumnItem>
    </TableColumnItems>
  </TableRowEntry>
</TableRowEntries>

Mentse és zárja be a fájlt. Az Update-FormatData használatával adja hozzá az új formátumfájlt az aktuális PowerShell-munkamenethez.

Ez a példa a PrependPath paraméterrel helyezi el az új fájlt az eredeti fájlnál nagyobb sorrendben. További információ: Update-FormatData.

Update-FormatData -PrependPath $HOME\Format\CultureInfo.Format.ps1xml

A módosítás teszteléséhez írja be a Get-Culture, és tekintse át a Calendar tulajdonságot tartalmazó kimenetet.

Get-Culture
LCID  Name   Calendar                                DisplayName
----  ----   --------                                -----------
1033  en-US  System.Globalization.GregorianCalendar  English (United States)

Az XML a Format.ps1xml fájlokban

A teljes sémadefiníció Format.xsd található a GitHub PowerShell-forráskódtárában.

Az egyes fájlok Format.ps1xml szakasza tartalmazza az egyes nézeteket meghatározó <View> címkéket. Egy tipikus <View> címke a következő címkéket tartalmazza:

  • <Name> azonosítja a nézet nevét.
  • <ViewSelectedBy> megadja az objektumtípust vagy -típusokat, amelyekre a nézet vonatkozik.
  • <GroupBy> meghatározza, hogy a nézetben lévő elemek hogyan lesznek egyesítve csoportokban.
  • <TableControl>, <ListControl>, <WideControl>és <CustomControl> az egyes elemek megjelenítését meghatározó címkéket tartalmazzák.

ViewSelectedBy címke

A <ViewSelectedBy> címke <TypeName> címkét tartalmazhat minden olyan objektumtípushoz, amelyre a nézet vonatkozik. Vagy tartalmazhat olyan <SelectionSetName> címkét is, amely máshol definiált kijelölési csoportra hivatkozik egy <SelectionSet> címke használatával.

GroupBy címke

A <GroupBy> címke egy <PropertyName> címkét tartalmaz, amely meghatározza azt az objektumtulajdonságot, amely alapján az elemeket csoportosítani kell. Emellett tartalmaz egy <Label> címkét is, amely megadja az egyes csoportokhoz címkéként használandó sztringet, vagy egy <CustomControlName> címkét, amely máshol definiált egyéni vezérlőre hivatkozik egy <Control> címkével. A <Control> címke egy <Name> címkét és egy <CustomControl> címkét tartalmaz.

TableControlTag

A <TableControl> címke általában <TableHeaders> és <TableRowEntries> címkéket tartalmaz, amelyek meghatározzák a táblázat fejeinek és sorainak formázását. A <TableHeaders> címke általában <TableColumnHeader> címkéket tartalmaz, amelyek <Label>, <Width>és <Alignment> címkéket tartalmaznak. A <TableRowEntries> címke <TableRowEntry> címkét tartalmaz a tábla minden sorához. A <TableRowEntry> címke egy <TableColumnItems> címkét tartalmaz, amely <TableColumnItem> címkét tartalmaz a sor minden oszlopához. A <TableColumnItem> címke általában egy <PropertyName> címkét tartalmaz, amely azonosítja a megadott helyen megjelenítendő objektumtulajdonságot, vagy egy <ScriptBlock> címkét, amely szkriptkódot tartalmaz, amely kiszámítja a helyen megjelenítendő eredményt.

Jegyzet

A szkriptblokkok máshol is használhatók olyan helyeken, ahol a számított eredmények hasznosak lehetnek.

A <TableColumnItem> címke egy <FormatString> címkét is tartalmazhat, amely meghatározza a tulajdonság vagy a számított eredmények megjelenítését.

ListControl címke

A <ListControl> címke általában egy <ListEntries> címkét tartalmaz. A <ListEntries> címke egy <ListEntry> címkét tartalmaz. A <ListEntry> címke egy <ListItems> címkét tartalmaz. A <ListItems> címke <ListItem> címkéket tartalmaz, amelyek <PropertyName> címkéket tartalmaznak. A <PropertyName> címkék határozzák meg a listában megadott helyen megjelenítendő objektumtulajdonságot. Ha a nézetkijelölés kijelöléskészlettel van definiálva, a <ListControl> és <ListEntry> címkék egy vagy több <EntrySelectedBy> címkét tartalmazó <TypeName> címkét is tartalmazhatnak. Ezek a <TypeName> címkék határozzák meg a <ListControl> címke megjelenítendő objektumtípusát.

WideControl címke

A <WideControl> címke általában egy <WideEntries> címkét tartalmaz. A <WideEntries> címke egy vagy több <WideEntry> címkét tartalmaz. Egy <WideEntry> címke egy <WideItem> címkét tartalmaz.

A <WideItem> címkének tartalmaznia kell egy <PropertyName> vagy egy <ScriptBlock> címkét. A <PropertyName> címke megadja a nézetben megadott helyen megjelenítendő tulajdonságot. A <ScriptBlock> címke egy szkriptet határoz meg, amely kiértékeli és megjeleníti a nézetben megadott helyen.

A <WideItem> címkék tartalmazhatnak egy <FormatString> címkét, amely meghatározza a tulajdonság megjelenítését.

CustomControl címke

A <CustomControl> címke lehetővé teszi, hogy szkriptblokk használatával definiáljon egy formátumot. A <CustomControl> címke általában egy <CustomEntries> címkét tartalmaz, amely több <CustomEntry> címkét foglal magában. Minden <CustomEntry> címke tartalmaz egy <CustomItem> címkét, amely különböző címkéket tartalmazhat, amelyek a nézetben megadott hely tartalmát és formázását határozzák meg, beleértve a <Text>, <Indentation>, <ExpressionBinding>és <NewLine> címkéket.

Tracing Format.ps1xml fájl használata

A Format.ps1xml fájlok betöltése vagy alkalmazása során előforduló hibák észleléséhez használja a Trace-Command parancsmagot az alábbi formátumösszetevők bármelyikével a Név paraméter értékeként:

  • Formátumfájl Betöltése
  • FormatViewBinding

További információ: Trace-Command és Get-TraceSource.

Format.ps1xml fájl aláírása

A Format.ps1xml fájl felhasználóinak védelméhez digitális aláírással írja alá a fájlt. További információkért nézze meg about_Signing.

Minta XML Format-Table egyéni nézethez

A következő XML-minta létrehoz egy Format-Table egyéni nézetet a System.IO.DirectoryInfo és System.IO.FileInfoGet-ChildItemáltal létrehozott objektumokhoz. Az egyéni nézet neve MyGciView, és hozzáadja a CreationTime oszlopot a táblához.

Az egyéni nézet létrehozásához használja a Get-FormatData és Export-FormatData parancsmagokat egy .ps1xml fájl létrehozásához. Ezután szerkessze a .ps1xml fájlt az egyéni nézet kódjának létrehozásához. A .ps1xml fájl bármely olyan könyvtárban tárolható, amelyhez a PowerShell hozzáférhet. Például a $HOMEalkönyvtára.

A .ps1xml fájl létrehozása után a Update-FormatData parancsmaggal vegye fel a nézetet az aktuális PowerShell-munkamenetbe. Vagy adja hozzá a frissítési parancsot a PowerShell-profilhoz, ha az összes PowerShell-munkamenetben elérhető nézetre van szüksége.

Ebben a példában az egyéni nézetnek táblaformátumot kell használnia, ellenkező esetben Format-Table meghiúsul.

A Format-Table paraméterrel megadhatja az egyéni nézet nevét, MyGciView, és formázhatja a tábla kimenetét a CreationTime oszlopban. Példa a parancs futtatására: Format-Table.

Jegyzet

Bár a forráskódból lekérheti a formázási XML-t egy egyéni nézet létrehozásához, további fejlesztésre lehet szükség a kívánt eredmény eléréséhez.

Az alábbi Get-FormatData parancsban a PowerShellVersion paraméter alternatívája biztosítja, hogy a rendszer minden helyi formázási információt visszaadjon. Használjon -PowerShellVersion $PSVersionTable.PSVersion egy adott PowerShell-verzió helyett.

Get-FormatData -PowerShellVersion 5.1 -TypeName System.IO.DirectoryInfo |
   Export-FormatData -LiteralPath $HOME\Format\MyGciView.Format.ps1xml

Update-FormatData -AppendPath $HOME\Format\MyGciView.Format.ps1xml
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
  <ViewDefinitions>
    <View>
      <Name>MyGciView</Name>
      <ViewSelectedBy>
        <TypeName>System.IO.DirectoryInfo</TypeName>
        <TypeName>System.IO.FileInfo</TypeName>
      </ViewSelectedBy>
      <GroupBy>
        <PropertyName>PSParentPath</PropertyName>
      </GroupBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Mode</Label>
            <Width>7</Width>
            <Alignment>Left</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>LastWriteTime</Label>
            <Width>26</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>CreationTime</Label>
            <Width>26</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Length</Label>
            <Width>14</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Name</Label>
            <Alignment>Left</Alignment>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap />
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>ModeWithoutHardLink</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>LastWriteTime</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>CreationTime</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Length</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Name</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
  </ViewDefinitions>
</Configuration>

Lásd még