Format.ps1xml hakkında
Kısa açıklama
PowerShell 6'dan itibaren nesnelerin varsayılan görünümleri PowerShell kaynak kodunda tanımlanır.
Nesnelerin görünümünü değiştirmek veya PowerShell'de oluşturduğunuz yeni nesne türleri için varsayılan görünümleri tanımlamak için kendi Format.ps1xml dosyalarınızı oluşturabilirsiniz.
Uzun açıklama
PowerShell 6'dan itibaren varsayılan görünümler PowerShell kaynak kodunda tanımlanır. PowerShell 5.1 ve önceki sürümlerdeki Format.ps1xml dosyaları PowerShell 6 ve sonraki sürümlerde mevcut değildir.
PowerShell kaynak kodu, PowerShell konsolundaki nesnelerin varsayılan görüntüsünü tanımlar. Nesnelerin görünümünü değiştirmek veya PowerShell'de oluşturduğunuz yeni nesne türleri için varsayılan görünümleri tanımlamak için kendi Format.ps1xml dosyalarınızı oluşturabilirsiniz.
PowerShell bir nesneyi görüntülediğinde, nesnenin varsayılan görüntüsünü belirlemek için yapılandırılmış biçimlendirme dosyalarındaki verileri kullanır. Biçimlendirme dosyalarındaki veriler, nesnenin bir tabloda mı yoksa bir listede mi görüntüleneceğini ve varsayılan olarak hangi özelliklerin görüntüleneceğini belirler.
Biçimlendirme yalnızca ekranı etkiler. Hangi nesne özelliklerinin ardışık düzene aktarıldığını veya bunların nasıl aktarıldığını etkilemez. Format.ps1xml dosyaları karma tabloların çıktı biçimini özelleştirmek için kullanılamaz.
Bir .ps1xml biçimlendirme dosyası, her nesnenin dört farklı görünümünü tanımlayabilir:
- Masa
- Liste
- Geniş
- Gelenek
Örneğin, bir Get-ChildItem komutunun çıktısı bir Format-List komutuna aktarıldığında, Format-List tanımlanan liste görünümünü kullanır Dosya ve klasör nesnelerinin liste halinde nasıl görüntüleneceğini belirlemek için kaynak kodda.
Biçimlendirme dosyası bir nesnenin birden fazla görünümünü içerdiğinde PowerShell bulduğu ilk görünümü uygular.
Özel bir Format.ps1xml dosyasında görünüm, görünümün adını, uygulanabileceği nesne türünü, sütun başlıklarını ve görünümün gövdesinde görüntülenen özellikler. Format.ps1xml dosyalarındaki format, veri kullanıcıya sunulmadan hemen önce uygulanır.
Yeni Format.ps1xml dosyaları oluşturma
Mevcut bir nesne görünümünün görüntüleme biçimini değiştirmek veya yeni nesnelere yönelik görünümler eklemek için kendi Format.ps1xml dosyalarınızı oluşturun ve ardından bunları PowerShell oturumunuza ekleyin.
Özel bir görünüm tanımlamak üzere bir Format.ps1xml dosyası oluşturmak için Get-FormatData ve Export-FormatData cmdlet'lerini kullanın. Dosyayı düzenlemek için bir metin düzenleyici kullanın. Dosya, $HOME alt dizini gibi PowerShell'in erişebileceği herhangi bir dizine kaydedilebilir.
Geçerli görünümün biçimlendirmesini değiştirmek için, görünümü biçimlendirme dosyasında bulun ve ardından görünümü değiştirmek için etiketleri kullanın. Yeni bir nesne türü için görünüm oluşturmak için yeni bir görünüm oluşturun veya mevcut bir görünümü model olarak kullanın. Etiketler bir sonraki bölümde açıklanmaktadır. Daha sonra dosyadaki diğer tüm görünümleri silebilirsiniz, böylece değişiklikleri dosyayı inceleyen herkes görebilir.
Değişiklikleri kaydettikten sonra, yeni dosyayı PowerShell oturumunuza eklemek için Update-FormatData'yı kullanın. Görünümünüzün yerleşik dosyalarda tanımlanan bir görünüme göre öncelikli olmasını istiyorsanız PrependPath parametresini kullanın. Update-FormatData yalnızca geçerli oturumu etkiler. Değişikliği gelecekteki tüm oturumlarda yapmak için Update-FormatData komutunu PowerShell profilinize ekleyin.
Örnek: Kültür nesnelerine takvim verileri ekleme
Bu örnek, geçerli PowerShell oturumunda Get-Culture cmdlet'i tarafından oluşturulan System.Globalization.CultureInfo kültür nesnelerinin formatının nasıl değiştirileceğini gösterir. Örnekteki komutlar, Takvim özelliğini kültür nesnelerinin varsayılan tablo görünümü görünümüne ekler.
Başlamak için kaynak kod dosyasından biçim verilerini alın ve kültür nesnelerinin geçerli görünümünü içeren bir Format.ps1xml dosyası oluşturun.
Get-FormatData -TypeName System.Globalization.CultureInfo |
Export-FormatData -Path $HOME\Format\CultureInfo.Format.ps1xml
CultureInfo.Format.ps1xml dosyasını herhangi bir XML veya Visual Studio Code gibi metin düzenleyicide açın. Aşağıdaki XML, CultureInfo nesnesinin görünümlerini tanımlar.
CultureInfo.Format.ps1xml dosyası aşağıdaki örnek gibi görünmelidir:
<?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>
Yeni bir <TableColumnHeader> etiketi kümesi ekleyerek Takvim özelliği için yeni bir sütun oluşturun. Takvim özelliğinin değeri uzun olabilir, bu nedenle <Width> olarak 45 karakterlik bir değer belirtin.
<TableHeaders>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>45</Width>
</TableColumnHeader>
<TableColumnHeader/>
</TableHeaders>
<TableColumnItem> ve <PropertyName etiketlerini kullanarak tablo satırlarına Takvim için yeni bir sütun öğesi ekleyin:
<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>
Dosyayı kaydedip kapatın. Yeni biçim dosyasını geçerli PowerShell oturumuna eklemek için Update-FormatData'yı kullanın.
Bu örnek, yeni dosyayı orijinal dosyadan daha yüksek bir öncelik sırasına yerleştirmek için PrependPath parametresini kullanır. Daha fazla bilgi için bkz. Update-FormatData.
Update-FormatData -PrependPath $HOME\Format\CultureInfo.Format.ps1xml
Değişikliği test etmek için Get-Culture yazın ve Calendar özelliğini içeren çıktıyı inceleyin.
Get-Culture
LCID Name Calendar DisplayName
---- ---- -------- -----------
1033 en-US System.Globalization.GregorianCalendar English (United States)
Format.ps1xml dosyalarındaki XML
Tam şema tanımı GitHub'daki PowerShell kaynak kodu deposundaki Format.xsd dosyasında bulunabilir.
Her Format.ps1xml dosyasının Görünüm Tanımları bölümü, her görünümü tanımlayan <View> etiketlerini içerir. Tipik bir <View> etiketi aşağıdaki etiketleri içerir:
<Name>görünümün adını tanımlar.<ViewSelectedBy>görünümün uygulanacağı nesne türünü veya türlerini belirtir.<GroupBy>görünümdeki öğelerin gruplar halinde nasıl birleştirileceğini belirtir.<TableControl>,<ListControl>,<WideControl>ve<CustomControl>, nasıl yapılacağını belirten etiketleri içerir her öğe görüntülenecektir.
ViewSelectedBy etiketi
<ViewSelectedBy> etiketi, görünümün uygulandığı her nesne türü için bir <TypeName> etiketi içerebilir. Veya başka bir yerde <SelectionSet> etiketi kullanılarak tanımlanmış bir seçim kümesine başvuran bir <SelectionSetName> etiketi içerebilir.
GroupBy etiketi
<GroupBy> etiketi, öğelerin gruplandırılacağı nesne özelliğini belirten bir <PropertyName> etiketi içerir. Ayrıca, her grup için etiket olarak kullanılacak bir dizeyi belirten bir <Label> etiketi veya başka bir yerde tanımlanmış bir özel denetime başvuruda bulunan bir <CustomControlName> etiketi içerir. bir <Control> etiketi. <Control> etiketi bir <Name> etiketi ve bir <CustomControl> etiketi içerir.
TabloKontrol Etiketi
<TableControl> etiketi genellikle tablonun başlıkları ve satırlarının biçimlendirmesini tanımlayan <TableHeaders> ve <TableRowEntries> etiketlerini içerir. <TableHeaders> etiketi genellikle <Label>, <Width> ve <TableColumnHeader> etiketlerini içerir. <Alignment> etiketleri. <TableRowEntries> etiketi, tablodaki her satır için <TableRowEntry> etiketlerini içerir. <TableRowEntry> etiketi, satırdaki her sütun için bir <TableColumnItem> etiketi içeren bir <TableColumnItems> etiketi içerir. Genellikle <TableColumnItem> etiketi, tanımlanan konumda görüntülenecek nesne özelliğini tanımlayan bir <PropertyName> etiketi veya bir <ScriptBlock> içerir. konumda görüntülenecek sonucu hesaplayan komut dosyası kodunu içeren etiket.
Not
Komut dosyası blokları, hesaplanan sonuçların faydalı olabileceği yerlerde başka yerlerde de kullanılabilir.
<TableColumnItem> etiketi ayrıca özelliğin veya hesaplanan sonuçların nasıl görüntüleneceğini belirten bir <FormatString> etiketi de içerebilir.
ListeKontrol etiketi
<ListControl> etiketi genellikle bir <ListEntries> etiketi içerir. <ListEntries> etiketi bir <ListEntry> etiketi içerir. <ListEntry> etiketi bir <ListItems> etiketi içerir. <ListItems> etiketi, <PropertyName> etiketlerini içeren <ListItem> etiketlerini içerir. <PropertyName> etiketleri, listede belirtilen konumda görüntülenecek nesne özelliğini belirtir. Görünüm seçimi bir seçim kümesi kullanılarak tanımlanırsa, <ListControl> ve <ListEntry> etiketleri aynı zamanda aşağıdakileri sağlayan bir <EntrySelectedBy> etiketi de içerebilir. bir veya daha fazla <TypeName> etiketi içerir. Bu <TypeName> etiketleri, <ListControl> etiketinin görüntülemeyi amaçladığı nesne türünü belirtir.
WideControl etiketi
<WideControl> etiketi genellikle bir <WideEntries> etiketi içerir. <WideEntries> etiketi bir veya daha fazla <WideEntry> etiketi içerir. Bir <WideEntry> etiketi bir adet <WideItem> etiketi içerir.
Bir <WideItem> etiketi, bir <PropertyName> etiketi veya bir <ScriptBlock> etiketi içermelidir. <PropertyName> etiketi, görünümde belirtilen konumda görüntülenecek özelliği belirtir. <ScriptBlock> etiketi, görünümde belirtilen konumda değerlendirilecek ve görüntülenecek bir komut dosyasını belirtir.
Bir <WideItem> etiketi, özelliğin nasıl görüntüleneceğini belirten bir <FormatString> etiketi içerebilir.
Özel Kontrol etiketi
<CustomControl> etiketi, bir format tanımlamak için bir komut dosyası bloğu kullanmanızı sağlar. Bir <CustomControl> etiketi genellikle birden fazla <CustomEntry> etiketi içeren bir <CustomEntries> etiketi içerir. Her <CustomEntry> etiketi, < dahil olmak üzere görünümde belirtilen konumun içeriğini ve biçimlendirmesini belirten çeşitli etiketleri içerebilen bir , <CustomItem> etiketi içerir. Text><Indentation>, <ExpressionBinding> ve <NewLine> etiketleri.
İzleme Formatı.ps1xml dosyası kullanımı
Format.ps1xml dosyalarının yüklenmesi veya uygulanması sırasındaki hataları algılamak için Ad değeri olarak Trace-Command cmdlet'ini aşağıdaki biçim bileşenlerinden herhangi biriyle birlikte kullanın. parametresi:
- FormatDosyaYükleniyor
- FormatViewBinding
Daha fazla bilgi için bkz. Trace-Command ve Get-TraceSource.
Format.ps1xml dosyasını imzalama
Format.ps1xml dosyanızın kullanıcılarını korumak için dosyayı dijital imza kullanarak imzalayın. Daha fazla bilgi için bkz. about_Signing.
Biçim Tablosu özel görünümü için örnek XML
Aşağıdaki XML örneği, System.IO.DirectoryInfo ve System.IO.FileInfo nesneleri için bir . Özel görünüm mygciview olarak adlandırılır ve tabloya CreationTime sütununu ekler.Format-Table özel görünümü oluşturur >Get-ChildItem
Özel görünümü oluşturmak için Get-FormatData ve Export-FormatData cmdlet'lerini kullanarak bir .ps1xml dosyası oluşturun. Ardından, özel görünümünüzün kodunu oluşturmak için .ps1xml dosyanızı düzenleyin. .ps1xml dosyası, PowerShell'in erişebildiği herhangi bir dizinde saklanabilir. Örneğin, $HOME alt dizini.
.ps1xml dosyası oluşturulduktan sonra görünümü geçerli PowerShell oturumuna dahil etmek için Update-FormatData cmdlet'ini kullanın. Veya tüm PowerShell oturumlarında mevcut görünüme ihtiyacınız varsa güncelleme komutunu PowerShell profilinize ekleyin.
Bu örnekte, özel görünümün tablo formatını kullanması gerekir, aksi takdirde Tablo Formatı başarısız olur.
Özel görünümün adını (mygciview) belirtmek için View parametresiyle birlikte Format-Table'ı kullanın ve tablonun çıktısını CreationTime< ile biçimlendirin. sütunu. Komutun nasıl çalıştırıldığına dair bir örnek için bkz. Format Tablosu.
Not
Özel bir görünüm oluşturmak için biçimlendirme XML'sini kaynak kodundan alabilmenize rağmen, istenen sonucu elde etmek için daha fazla geliştirme yapılması gerekebilir.
Aşağıdaki Get-FormatData komutunda, tüm yerel biçimlendirme bilgilerinin döndürülmesini sağlamak için PowerShellVersion parametresinin bir alternatifi vardır. Belirli bir PowerShell sürümü yerine -PowerShellVersion $PSVersionTable.PSVersion kullanın.
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>
Ayrıca bakınız
- Trace-Command
- Export-FormatData
- Get-FormatData
- Update-FormatData
- Get-TraceSource
- Biçim Şeması XML Referansı
- PowerShell Biçimlendirme Dosyası Yazma