about_Format.ps1xml
Krátký popis
Počínaje PowerShellem 6 se výchozí zobrazení objektů definují ve zdrojovém kódu PowerShellu.
Můžete vytvořit vlastní Format.ps1xml
soubory a změnit zobrazení objektů nebo definovat výchozí zobrazení pro nové typy objektů, které vytvoříte v PowerShellu.
Dlouhý popis
Počínaje PowerShellem 6 se výchozí zobrazení definují ve zdrojovém kódu PowerShellu. Soubory Format.ps1xml
z PowerShellu 5.1 a starších verzí v PowerShellu 6 a novějších verzích neexistují.
Zdrojový kód PowerShellu definuje výchozí zobrazení objektů v konzole PowerShellu. Můžete vytvořit vlastní Format.ps1xml
soubory a změnit zobrazení objektů nebo definovat výchozí zobrazení pro nové typy objektů, které vytvoříte v PowerShellu.
Když PowerShell zobrazí objekt, použije data v souborech strukturovaného formátování k určení výchozího zobrazení objektu. Data v souborech formátování určují, zda se objekt vykresluje v tabulce nebo v seznamu, a určuje, které vlastnosti se ve výchozím nastavení zobrazují.
Formátování ovlivní jenom zobrazení. Nemá vliv na to, které vlastnosti objektu se předávají kanálu nebo jak se předávají. Format.ps1xml
soubory nelze použít k přizpůsobení výstupního formátu pro tabulky hash.
Formátovací .ps1xml
soubor může definovat čtyři různá zobrazení každého objektu:
- Table
- List
- Široká
- Vlastní
Pokud je například výstup Get-ChildItem
příkazu předaný do Format-List
příkazu, Format-List
pomocí zobrazení seznamu definovaného ve zdrojovém kódu určí, jak zobrazit objekty souborů a složek jako seznam.
Pokud formátovací soubor obsahuje více než jedno zobrazení objektu, Použije PowerShell první zobrazení, které najde.
Ve vlastním Format.ps1xml
souboru je zobrazení definováno sadou značek XML popisující název zobrazení, typ objektu, na který se dá použít, záhlaví sloupců a vlastnosti, které se zobrazí v těle zobrazení. Formát v Format.ps1xml
souborech se použije těsně před zobrazením dat uživateli.
Vytváření nových souborů Format.ps1xml
Pokud chcete změnit formát zobrazení existujícího zobrazení objektů nebo přidat zobrazení pro nové objekty, vytvořte vlastní Format.ps1xml
soubory a přidejte je do relace PowerShellu.
Pokud chcete vytvořit Format.ps1xml
soubor pro definování vlastního zobrazení, použijte rutiny Get-FormatData a Export-FormatData . K úpravě souboru použijte textový editor. Soubor lze uložit do libovolného adresáře, ke kterému má PowerShell přístup, například do podadresáře $HOME
.
Pokud chcete změnit formátování aktuálního zobrazení, vyhledejte zobrazení v souboru formátování a pak pomocí značek změňte zobrazení. Pokud chcete vytvořit zobrazení pro nový typ objektu, vytvořte nové zobrazení nebo použijte existující zobrazení jako model. Značky jsou popsány v další části. Pak můžete odstranit všechna ostatní zobrazení v souboru, aby změny byly zřejmé pro každého, kdo soubor zkoumá.
Po uložení změn přidejte nový soubor do relace PowerShellu pomocí rutiny Update-FormatData . Pokud chcete, aby zobrazení mělo přednost před zobrazením definovaným v předdefinovaných souborech, použijte parametr PrependPath . Update-FormatData
ovlivňuje pouze aktuální relaci. Pokud chcete provést změnu všech budoucích relací, přidejte Update-FormatData
příkaz do profilu PowerShellu.
Příklad: Přidání dat kalendáře do objektů jazykové verze
Tento příklad ukazuje, jak změnit formátování objekty jazykové verze System.Globalization.CultureInfo vygenerované rutinou Get-Culture
v aktuální relaci PowerShellu. Příkazy v příkladu přidají vlastnost Kalendář do výchozího zobrazení zobrazení tabulky objekty jazykové verze.
Začněte tím, že získáte data formátu ze souboru zdrojového kódu a vytvoříte Format.ps1xml
soubor, který obsahuje aktuální zobrazení objektů jazykové verze.
Get-FormatData -TypeName System.Globalization.CultureInfo |
Export-FormatData -Path $HOME\Format\CultureInfo.Format.ps1xml
Otevřete soubor v libovolném CultureInfo.Format.ps1xml
XML nebo textovém editoru, například v editoru Visual Studio Code. Následující XML definuje zobrazení CultureInfo objektu.
Soubor CultureInfo.Format.ps1xml
by měl vypadat jako v následující ukázce:
<?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>
Vytvořte nový sloupec pro vlastnost Kalendář přidáním nové sady <TableColumnHeader>
značek. Hodnota vlastnosti Calendar může být dlouhá, proto zadejte hodnotu 45 znaků jako <Width>
hodnotu .
<TableHeaders>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>45</Width>
</TableColumnHeader>
<TableColumnHeader/>
</TableHeaders>
Přidejte novou položku sloupce pro kalendář do řádků tabulky pomocí <TableColumnItem>
značek a <PropertyName
značek:
<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>
Soubor uložte a zavřete. Slouží Update-FormatData
k přidání nového formátu souboru do aktuální relace PowerShellu.
Tento příklad používá parametr PrependPath k umístění nového souboru do vyššího pořadí priorit než původní soubor. Další informace naleznete v tématu Update-FormatData.
Update-FormatData -PrependPath $HOME\Format\CultureInfo.Format.ps1xml
Pokud chcete změnu otestovat, zadejte Get-Culture
a zkontrolujte výstup, který obsahuje vlastnost Kalendář .
Get-Culture
LCID Name Calendar DisplayName
---- ---- -------- -----------
1033 en-US System.Globalization.GregorianCalendar English (United States)
Xml v souborech Format.ps1xml
Úplnou definici schématu najdete ve formátu Format.xsd v úložišti zdrojového kódu PowerShellu na GitHubu.
Oddíl ViewDefinitions každého Format.ps1xml
souboru obsahuje <View>
značky, které definují každé zobrazení. Typická <View>
značka zahrnuje následující značky:
<Name>
určuje název zobrazení.<ViewSelectedBy>
určuje typ objektu nebo typy, na které se zobrazení vztahuje.<GroupBy>
určuje, jak budou položky v zobrazení sloučeny ve skupinách.<TableControl>
,<ListControl>
,<WideControl>
a<CustomControl>
obsahují značky, které určují, jak budou jednotlivé položky zobrazeny.
Značka ViewSelectedBy
Značka <ViewSelectedBy>
může obsahovat <TypeName>
značku pro každý typ objektu, na který se zobrazení vztahuje. Nebo může obsahovat <SelectionSetName>
značku, která odkazuje na sadu výběru definovanou jinde pomocí značky <SelectionSet>
.
Značka GroupBy
Značka <GroupBy>
obsahuje <PropertyName>
značku, která určuje vlastnost objektu, podle kterých mají být položky seskupeny. Obsahuje také <Label>
značku, která určuje řetězec, který se má použít jako popisek pro každou skupinu, nebo <CustomControlName>
značku, která odkazuje na vlastní ovládací prvek definovaný jinde pomocí značky <Control>
. Značka <Control>
obsahuje <Name>
značku a <CustomControl>
značku.
TableControlTag
Značka <TableControl>
obvykle obsahuje <TableHeaders>
a <TableRowEntries>
značky definující formátování hlav a řádků tabulky. Značka <TableHeaders>
obvykle obsahuje <TableColumnHeader>
značky, které obsahují <Label>
, <Width>
a <Alignment>
značky. Značka <TableRowEntries>
obsahuje <TableRowEntry>
značky pro každý řádek v tabulce. Značka <TableRowEntry>
obsahuje <TableColumnItems>
značku, která obsahuje <TableColumnItem>
značku pro každý sloupec v řádku. Značka obvykle obsahuje <PropertyName>
značku, <TableColumnItem>
která identifikuje vlastnost objektu, která se má zobrazit v definovaném umístění, nebo <ScriptBlock>
značku obsahující kód skriptu, který vypočítá výsledek, který se má zobrazit v umístění.
Poznámka:
Bloky skriptu se dají použít i jinde v umístěních, kde můžou být užitečné počítané výsledky.
Značka <TableColumnItem>
může také obsahovat <FormatString>
značku, která určuje způsob zobrazení vlastnosti nebo počítaných výsledků.
Značka ListControl
Značka <ListControl>
obvykle obsahuje <ListEntries>
značku. Značka <ListEntries>
obsahuje <ListEntry>
značku. Značka <ListEntry>
obsahuje <ListItems>
značku. Značka <ListItems>
obsahuje <ListItem>
značky, které obsahují <PropertyName>
značky. Značky <PropertyName>
určují vlastnost objektu, která se má zobrazit v zadaném umístění v seznamu. Pokud je výběr zobrazení definovaný pomocí sady výběru, mohou značky <ListEntry>
obsahovat <EntrySelectedBy>
také značku, <ListControl>
která obsahuje jednu nebo více <TypeName>
značek. Tyto <TypeName>
značky určují typ objektu <ListControl>
, který má značka zobrazit.
Značka WideControl
Značka <WideControl>
obvykle obsahuje <WideEntries>
značku. Značka <WideEntries>
obsahuje jednu nebo více <WideEntry>
značek. Značka <WideEntry>
obsahuje jednu <WideItem>
značku.
Značka <WideItem>
musí obsahovat <PropertyName>
značku nebo <ScriptBlock>
značku. Značka <PropertyName>
určuje vlastnost, která se má zobrazit v zadaném umístění v zobrazení. Značka <ScriptBlock>
určuje skript, který se má vyhodnotit a zobrazit v zadaném umístění v zobrazení.
Značka <WideItem>
může obsahovat <FormatString>
značku, která určuje, jak se má vlastnost zobrazit.
Značka CustomControl
Značka <CustomControl>
umožňuje definovat formát pomocí bloku skriptu. Značka <CustomControl>
obvykle obsahuje <CustomEntries>
značku, která obsahuje více <CustomEntry>
značek. Každá <CustomEntry>
značka obsahuje <CustomItem>
značku, která může obsahovat různé značky, které určují obsah a formátování zadaného umístění v zobrazení, včetně <Text>
, , <Indentation>
<ExpressionBinding>
a <NewLine>
značek.
Použití souboru Tracing Format.ps1xml
Pokud chcete zjistit chyby při načítání nebo aplikaci Format.ps1xml
souborů, použijte rutinu Trace-Command
s některou z následujících komponent formátu jako hodnotu parametru Name :
- FormatFileLoading
- FormatViewBinding
Další informace naleznete v tématu Trace-Command a Get-TraceSource.
Podepsání souboru Format.ps1xml
Pokud chcete chránit uživatele souboru Format.ps1xml
, podepište ho pomocí digitálního podpisu. Další informace najdete v tématu about_Signing.
Ukázkový XML pro vlastní zobrazení formátovací tabulky
Následující ukázka XML vytvoří Format-Table
vlastní zobrazení pro Objekty System.IO.DirectoryInfo a System.IO.FileInfo vytvořené objekty Get-ChildItem
. Vlastní zobrazení má název mygciview a přidá do tabulky sloupec CreationTime .
Pokud chcete vytvořit vlastní zobrazení, vygenerujte .ps1xml
soubor pomocí Get-FormatData
rutin a Export-FormatData
rutin. Potom upravte .ps1xml
soubor a vytvořte kód pro vlastní zobrazení. Soubor .ps1xml
lze uložit v libovolném adresáři, ke kterému má PowerShell přístup. Například podadresář .$HOME
.ps1xml
Po vytvoření souboru použijte Update-FormatData
rutinu k zahrnutí zobrazení do aktuální relace PowerShellu. Pokud potřebujete zobrazení dostupné ve všech relacích PowerShellu, přidejte do profilu PowerShellu příkaz update.
V tomto příkladu musí vlastní zobrazení použít formát tabulky, Format-Table
jinak selže.
Pomocí Format-Table
parametru View můžete zadat název vlastního zobrazení, mygciview a naformátovat výstup tabulky pomocí sloupce CreationTime . Příklad spuštění příkazu najdete v tématu Format-Table.
Poznámka:
I když můžete získat formátování XML ze zdrojového kódu pro vytvoření vlastního zobrazení, může být k získání požadovaného výsledku potřeba další vývoj.
V následujícím Get-FormatData
příkazu je k dispozici alternativní parametr PowerShellVersion , který zajistí, že se vrátí všechny informace o místním formátování. Používejte -PowerShellVersion $PSVersionTable.PSVersion
místo konkrétní verze PowerShellu.
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>