about_Format.ps1xml
Kısa açıklama
PowerShell 6'da başlayarak, nesneler için varsayılan görünümler PowerShell kaynak kodunda tanımlanır.
Nesnelerin görüntüsünü değiştirmek veya PowerShell'de oluşturduğunuz yeni nesne türleri için varsayılan görüntüler tanımlamak için kendi Format.ps1xml
dosyalarınızı oluşturabilirsiniz.
Uzun açıklama
PowerShell 6'da başlayarak, varsayılan görünümler PowerShell kaynak kodunda tanımlanır. Format.ps1xml
PowerShell 5.1 ve önceki sürümlerdeki dosyalar PowerShell 6 ve sonraki sürümlerde yoktur.
PowerShell kaynak kodu, PowerShell konsolundaki nesnelerin varsayılan görüntüsünü tanımlar. Nesnelerin görüntüsünü değiştirmek veya PowerShell'de oluşturduğunuz yeni nesne türleri için varsayılan görüntüler 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ünümü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 listede mi işleneceğini belirler ve varsayılan olarak hangi özelliklerin görüntüleneceğini belirler.
Biçimlendirme yalnızca görüntüyü etkiler. İşlem hattına hangi nesne özelliklerinin geçirildiğini veya bunların nasıl geçirildiğini etkilemez. Format.ps1xml
dosyaları karma tabloların çıkış biçimini özelleştirmek için kullanılamaz.
Biçimlendirme .ps1xml
dosyası her nesnenin dört farklı görünümünü tanımlayabilir:
- Tablo
- Liste
- Geniş
- Özel
Örneğin, bir Get-ChildItem
komutun çıkışı bir Format-List
komuta aktarıldığında, Format-List
dosya ve klasör nesnelerinin liste olarak nasıl görüntüleneceğini belirlemek için kaynak kodda tanımlanan liste görünümünü kullanır.
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 Format.ps1xml
bir dosyada, görünüm, görünümün adını, uygulanabileceği nesne türünü, sütun üst bilgilerini ve görünümün gövdesinde görüntülenen özellikleri açıklayan bir XML etiketleri kümesi tarafından tanımlanır. Dosyalardaki Format.ps1xml
biçim, veriler kullanıcıya sunulmadan hemen önce uygulanır.
Yeni Format.ps1xml dosyaları oluşturma
Var olan nesne görünümünün görüntüleme biçimini değiştirmek veya yeni nesnelere görünüm eklemek için kendi Format.ps1xml
dosyalarınızı oluşturun ve bunları PowerShell oturumunuza ekleyin.
Özel görünüm tanımlamak üzere bir Format.ps1xml
dosya oluşturmak için Get-FormatData ve Export-FormatData cmdlet'lerini kullanın. Dosyayı düzenlemek için bir metin düzenleyicisi kullanın. Dosya, PowerShell'in erişebileceği herhangi bir dizine (örneğin, bir alt dizinine $HOME
) kaydedilebilir.
Geçerli görünümün biçimlendirmesini değiştirmek için, biçimlendirme dosyasında görünümü bulun ve ardından etiketleri kullanarak görünümü değiştirin. Yeni nesne türüne yönelik bir görünüm oluşturmak için yeni bir görünüm oluşturun veya var olan bir görünümü model olarak kullanın. Etiketler sonraki bölümde açıklanmıştır. Daha sonra dosyadaki diğer tüm görünümleri silebilirsiniz, böylece değişiklikler dosyayı inceleyen herkes tarafından anlaşılır.
Değişiklikleri kaydettikten sonra Update-FormatData kullanarak yeni dosyayı PowerShell oturumunuza ekleyin. Görünümünüzün yerleşik dosyalarda tanımlanan görünümden öncelikli olmasını istiyorsanız PrependPath parametresini kullanın. Update-FormatData
yalnızca geçerli oturumu etkiler. Gelecekteki tüm oturumlarda değişiklik yapmak için komutunu PowerShell profilinize ekleyin Update-FormatData
.
Örnek: Kültür nesnelerine takvim verileri ekleme
Bu örnek, geçerli PowerShell oturumunda cmdlet tarafından oluşturulan System.Globalization.CultureInfo kültür nesnelerinin Get-Culture
biçimlendirmesini nasıl değiştireceğ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
dosya oluşturun.
Get-FormatData -TypeName System.Globalization.CultureInfo |
Export-FormatData -Path $HOME\Format\CultureInfo.Format.ps1xml
CultureInfo.Format.ps1xml
Dosyayı Visual Studio Code gibi herhangi bir XML veya metin düzenleyicisinde açın. Aşağıdaki XML, CultureInfo nesnesinin görünümlerini tanımlar.
Dosya CultureInfo.Format.ps1xml
aşağıdaki örnekteki 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 etiket kümesi <TableColumnHeader>
ekleyerek Takvim özelliği için yeni bir sütun oluşturun. Takvim özelliğinin değeri uzun olabilir, bu nedenle olarak <Width>
45 karakterlik bir değer belirtin.
<TableHeaders>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>16</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>45</Width>
</TableColumnHeader>
<TableColumnHeader/>
</TableHeaders>
ve <PropertyName
etiketlerini kullanarak <TableColumnItem>
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 kullanın Update-FormatData
.
Bu örnek, yeni dosyayı özgün 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 Calendar özelliğini içeren çıkışı yazın Get-Culture
ve gözden geçirin.
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 dosyanın ViewDefinitions bölümü, her Format.ps1xml
görünümü tanımlayan etiketleri içerir <View>
. Tipik <View>
bir etiket aşağıdaki etiketleri içerir:
<Name>
görünümün adını tanımlar.<ViewSelectedBy>
görünümün uygulandığı 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>
her öğenin nasıl görüntüleneceğini belirten etiketleri içerir.
ViewSelectedBy etiketi
etiketi, görünümün <ViewSelectedBy>
uygulandığı her nesne türü için bir <TypeName>
etiket içerebilir. Alternatif olarak, bir etiket kullanılarak başka bir yerde tanımlanan bir seçim kümesine başvuran bir <SelectionSet>
etiket de içerebilir<SelectionSetName>
.
GroupBy etiketi
etiketi, <GroupBy>
öğelerin gruplandırılacağı object özelliğini belirten bir <PropertyName>
etiket içerir. Ayrıca, her grup <Label>
için etiket olarak kullanılacak bir dizeyi belirten bir etiket veya <CustomControlName>
etiket kullanarak başka bir yerde tanımlanan özel denetime başvuran bir <Control>
etiket içerir. Etiket <Control>
bir <Name>
etiket ve bir <CustomControl>
etiket içerir.
TableControlTag
Etiket <TableControl>
genellikle tablonun başları ve <TableRowEntries>
satırları için biçimlendirmeyi tanımlayan ve etiketleri içerir<TableHeaders>
. <TableHeaders>
Etiketi genellikle , <Width>
ve <Alignment>
etiketlerini içeren <Label>
etiketler içerir<TableColumnHeader>
. etiketi, <TableRowEntries>
tablodaki her satır için etiketler içerir <TableRowEntry>
. etiketi, <TableRowEntry>
satırdaki her sütun için bir etiket içeren bir <TableColumnItem>
etiket içerir<TableColumnItems>
. Genellikle etiket, <TableColumnItem>
tanımlanan konumda görüntülenecek nesne özelliğini tanımlayan bir <PropertyName>
<ScriptBlock>
etiket veya konumda görüntülenecek bir sonucu hesaplayan betik kodu içeren bir etiket içerir.
Not
Betik blokları, hesaplanan sonuçların yararlı olabileceği konumlarda da kullanılabilir.
Etiketi, <TableColumnItem>
özelliğin veya hesaplanan sonuçların nasıl görüntüleneceğini belirten bir <FormatString>
etiket de içerebilir.
ListControl etiketi
Etiket <ListControl>
genellikle bir <ListEntries>
etiket içerir. Etiketi <ListEntries>
bir <ListEntry>
etiket içerir. Etiketi <ListEntry>
bir <ListItems>
etiket içerir. <ListItems>
etiketi, etiketleri içeren etiketler içerir <ListItem>
<PropertyName>
. Etiketler, <PropertyName>
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 ve <ListControl>
<ListEntry>
etiketleri bir veya daha fazla <TypeName>
etiket içeren bir <EntrySelectedBy>
etiket de içerebilir. Bu <TypeName>
etiketler, etiketin görüntülemeyi <ListControl>
amaçladığı nesne türünü belirtir.
WideControl etiketi
Etiket <WideControl>
genellikle bir <WideEntries>
etiket içerir. Etiketi <WideEntries>
bir veya daha fazla <WideEntry>
etiket içerir. Bir <WideEntry>
etiket bir <WideItem>
etiket içerir.
Etiketin <WideItem>
etiket <PropertyName>
veya etiket içermesi <ScriptBlock>
gerekir. Etiket <PropertyName>
, görünümde belirtilen konumda görüntülenecek özelliği belirtir. Etiket <ScriptBlock>
, görünümde belirtilen konumda değerlendirilecek ve görüntülenecek bir betik belirtir.
Bir <WideItem>
etiket, özelliğinin nasıl görüntüleneceğini belirten bir <FormatString>
etiket içerebilir.
CustomControl etiketi
etiketi, <CustomControl>
biçim tanımlamak için bir betik bloğu kullanmanıza olanak tanır. Etiket <CustomControl>
genellikle birden çok <CustomEntry>
etiket içeren bir <CustomEntries>
etiket içerir. Her <CustomEntry>
etiket, görünümde belirtilen konumun içeriğini ve biçimlendirmesini belirten , <Indentation>
, <ExpressionBinding>
ve <NewLine>
etiketleri dahil olmak üzere <Text>
çeşitli etiketler içerebilen bir <CustomItem>
etiket içerir.
Format.ps1xml dosya kullanımını izleme
Dosyaların yüklenmesi veya uygulanmasındaki Format.ps1xml
hataları algılamak için Name parametresinin Trace-Command
değeri olarak aşağıdaki biçim bileşenlerinden herhangi biriyle cmdlet'ini kullanın:
- FormatFileLoading
- FormatViewBinding
Daha fazla bilgi için bkz . Trace-Command ve Get-TraceSource.
Format.ps1xml dosyasını imzalama
Dosyanızın Format.ps1xml
kullanıcılarını korumak için dijital imza kullanarak dosyayı imzalayın. Daha fazla bilgi için bkz . about_Signing.
Format-Table özel görünümü için örnek XML
Aşağıdaki XML örneği, tarafından Get-ChildItem
oluşturulan System.IO.DirectoryInfo ve System.IO.FileInfo nesneleri için özel bir Format-Table
görünüm oluşturur. Özel görünüm mygciview olarak adlandırılır ve CreationTime sütununu tabloya ekler.
Özel görünümü oluşturmak için ve Export-FormatData
cmdlet'lerini kullanarak Get-FormatData
bir .ps1xml
dosya oluşturun. Ardından, özel görünümünüzün kodunu oluşturmak için dosyanızı .ps1xml
düzenleyin. Dosya, .ps1xml
PowerShell'in erişebileceği herhangi bir dizinde depolanabilir. Örneğin, öğesinin $HOME
bir alt dizini.
.ps1xml
Dosya oluşturulduktan sonra, görünümü geçerli PowerShell oturumuna eklemek için cmdlet'ini kullanınUpdate-FormatData
. İsterseniz, tüm PowerShell oturumlarında kullanılabilir görünüme ihtiyacınız varsa güncelleştirme komutunu PowerShell profilinize de ekleyebilirsiniz.
Bu örnekte özel görünümün tablo biçimini kullanması gerekir, aksi takdirde Format-Table
başarısız olur.
Özel görünümün adını, mygciview değerini belirtmek ve tablonun çıkışını CreationTime sütunuyla biçimlendirmek için View parametresiyle kullanınFormat-Table
. Komutun nasıl çalıştırıldığından bir örnek için bkz . Format-Table.
Not
Özel görünüm oluşturmak için kaynak koddan biçimlendirme XML'sini alsanız da, istenen sonucu elde etmek için daha fazla geliştirme gerekebilir.
Aşağıdaki Get-FormatData
komutta, 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 kullanın -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>
Ayrıca bkz.
PowerShell