Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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>