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 legyenek átadva a folyamatnak, vagy hogyan legyenek átadva. Format.ps1xml a fájlok nem használhatók a kivonattáblák kimeneti formátumának testreszabására.

A .ps1xml formázási fájlok négy különböző nézetet határozhatnak meg az egyes objektumokról:

  • Tábla
  • Lista
  • Széles
  • Egyéni

Ha például egy Get-ChildItem parancs kimenete parancsra Format-List 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 fájlformátumot Format.ps1xml a rendszer az adatok felhasználónak való megjelenítése előtt alkalmazza.

Ú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 szeretne fájlt létrehozniFormat.ps1xml, használja a Get-FormatData és az Export-FormatData parancsmagokat. A fájl szerkesztéséhez használjon szövegszerkesztőt. A fájl menthető bármely olyan könyvtárba, amelyhez a PowerShell hozzáférhet, például a $HOME.

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 vegye fel az új fájlt a PowerShell-munkamenetbe. 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 parancsot a Update-FormatData 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 kulturális objektumok formázását, amelyeket a Get-Culture parancsmag az aktuális PowerShell-munkamenetben hozott létre. A példában szereplő parancsok hozzáadják a Naptár tulajdonságot a kulturális objektumok alapértelmezett táblanézeté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.

Get-FormatData -TypeName System.Globalization.CultureInfo |
  Export-FormatData -Path $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 címkekészlet <TableColumnHeader> hozzáadásával. A Naptár tulajdonság értéke hosszú lehet, ezért adjon meg 45 karakteres értéket.<Width>

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

Adjon hozzá egy új oszlopelemet a Naptárhoz a táblázat soraiban a <TableColumnItem> következő címkékkel<PropertyName:

<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 új formátumfájl hozzáadása 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 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ó a Format.xsd fájlban található a GitHub PowerShell-forráskódtárában.

Az egyes Format.ps1xml fájlok ViewDefinitions szakasza tartalmazza az <View> egyes nézeteket meghatározó 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 objektum típusát vagy típusát, amelyre a nézet vonatkozik.
  • <GroupBy> meghatározza, hogy a nézetben lévő elemek hogyan lesznek egyesítve csoportokban.
  • <TableControl>, <ListControl>, <WideControl>és <CustomControl> tartalmazza azokat a címkéket, amelyek meghatározzák, hogyan jelenjenek meg az egyes elemek.

ViewSelectedBy címke

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

GroupBy címke

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

TableControlTag

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

Feljegyzés

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

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

WideControl címke

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

A <WideItem> címkéknek címkét <PropertyName> vagy címkét <ScriptBlock> kell tartalmazniuk. A <PropertyName> címke a nézetben megadott helyen megjelenítendő tulajdonságot adja meg. A <ScriptBlock> címke egy szkriptet ad meg, amely kiértékelhető és megjeleníthető a nézetben megadott helyen.

A <WideItem> címkék tartalmazhatnak olyan címkét <FormatString> , amely meghatározza a tulajdonság megjelenítésének módját.

CustomControl címke

A <CustomControl> címke lehetővé teszi, hogy szkriptblokk használatával definiáljon egy formátumot. A <CustomControl> címkék általában több <CustomEntry> címkét tartalmazó címkét <CustomEntries> tartalmaznak. Minden <CustomEntry> címke tartalmaz egy címkét <CustomItem> , 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 <Text>a , <Indentation>, <ExpressionBinding>és <NewLine> címkéket.

Tracing Format.ps1xml fájl használata

A fájlok betöltésével vagy alkalmazásával Format.ps1xml kapcsolatos hibák észleléséhez használja a Trace-Command parancsmagot a következő formátumösszetevők bármelyikével a Név paraméter értékeként:

  • FormatFileLoading
  • FormatViewBinding

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

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

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

Minta XML formátum–táblázat egyéni nézethez

Az alábbi XML-minta létrehoz egy Format-Table egyéni nézetet a System.IO.DirectoryInfo és a System.IO.FileInfo által Get-ChildItemlé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-FormatDataExport-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 egy alkönyvtár a $HOME.

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 Format-Table , ellenkező esetben sikertelen.

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

Feljegyzés

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. Egy adott PowerShell-verzió helyett használja -PowerShellVersion $PSVersionTable.PSVersion .

Get-FormatData -PowerShellVersion 5.1 -TypeName System.IO.DirectoryInfo |
   Export-FormatData -Path ./Mygciview.Format.ps1xml
Update-FormatData -AppendPath ./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