about_Format.ps1XML

Kısa açıklama

PowerShell 6 ' dan başlayarak, nesnelerin varsayılan görünümleri PowerShell kaynak kodunda tanımlanmıştır.

Format.ps1xmlNesneleri görüntülemeyi değiştirmek veya PowerShell 'de oluşturduğunuz yeni nesne türleri için varsayılan ekranları tanımlamak üzere kendi dosyalarınızı oluşturabilirsiniz.

Uzun açıklama

PowerShell 6 ' dan başlayarak, varsayılan görünümler PowerShell kaynak kodunda tanımlanmıştır. Format.ps1xmlPowershell 5,1 ve önceki sürümlerindeki dosyalar PowerShell 6 ve sonraki sürümlerde mevcut değildir.

PowerShell kaynak kodu, PowerShell konsolundaki nesnelerin varsayılan görünümünü tanımlar. Format.ps1xmlNesneleri görüntülemeyi değiştirmek veya PowerShell 'de oluşturduğunuz yeni nesne türleri için varsayılan ekranları tanımlamak üzere kendi dosyalarınızı oluşturabilirsiniz.

PowerShell bir nesne görüntülediğinde, nesnenin varsayılan görüntüsünü anlamak için yapılandırılmış biçimlendirme dosyalarındaki verileri kullanır. Biçimlendirme dosyalarındaki veriler, nesnenin bir tabloda veya bir listede işlenip işlenmediğini belirler ve varsayılan olarak hangi özelliklerin görüntülendiğini belirler.

Biçimlendirme yalnızca ekranı etkiler. İşlem hattının hangi nesne özelliklerini geçirdiğini veya nasıl geçtiğini etkilemez. Format.ps1xml dosyalar, karma tabloları için çıkış biçimini özelleştirmek üzere kullanılamaz.

.ps1xmlBiçimlendirme dosyası, her bir nesnenin dört farklı görünümünü tanımlayabilir:

  • Tablo
  • Liste
  • Geniş
  • Özel

Örneğin, bir Get-ChildItem komutun çıktısı bir komuta bir komut dosyasına geldiğinde Format-List , Format-List dosya ve klasör nesnelerinin bir liste olarak nasıl görüntüleneceğini anlamak için kaynak kodda tanımlanan liste görünümünü kullanır.

Bir 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 dosyada bir görünüm, görünümün adını, uygulanabileceğini nesnenin türünü, sütun üst bilgilerini ve görünümün gövdesinde görüntülenen özellikleri açıklayan bir dızı XML etiketi tarafından tanımlanır. Format.ps1xmlDosyalardaki biçim yalnızca veriler kullanıcıya sunulmadan önce uygulanır.

Yeni Format.ps1XML dosyaları oluşturma

Varolan bir nesne görünümünün görüntüleme biçimini değiştirmek veya yeni nesneler için görünümler eklemek, kendi Format.ps1xml dosyalarınızı oluşturun ve ardından bunları PowerShell oturumunuza ekleyin.

Format.ps1xmlÖzel bir görünüm tanımlamak üzere bir 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 kaydedilebilir, örneğin bir alt dizini $HOME .

Geçerli bir görünümün biçimlendirmesini değiştirmek için, biçimlendirme dosyasında görünümü bulun ve ardından, görünümü değiştirmek için etiketleri kullanın. Yeni bir nesne türü için bir görünüm oluşturmak, yeni bir görünüm oluşturmak veya mevcut bir görünümü model olarak kullanmak için. Etiketler sonraki bölümde açıklanmaktadır. Daha sonra değişikliklerin dosyayı inceleyen herkese açık olması için dosyadaki diğer tüm görünümleri silebilirsiniz.

Değişiklikleri kaydettikten sonra, yeni dosyayı PowerShell oturumunuza eklemek için Update-FormatData öğesini kullanın. Görünümlerinizin yerleşik dosyalarda tanımlanan bir görünümden öncelikli olmasını istiyorsanız Prependpath parametresini kullanın. Update-FormatData yalnızca geçerli oturumu etkiler. Sonraki tüm oturumlardaki değişikliği yapmak için Update-FormatData PowerShell profilinize komutunu ekleyin.

Örnek: kültür nesnelerine Takvim verileri ekleme

Bu örnekte, geçerli PowerShell oturumunda cmdlet 'i tarafından oluşturulan System. Globalization. CultureInfo kültür nesnelerinin biçimlendirmesinin nasıl değiştirileceği gösterilmektedir Get-Culture . Örnekteki komutlar, kültür nesnelerinin varsayılan tablo görünümü görüntüsüne Takvim özelliğini ekler.

Başlamak için, kaynak kodu dosyasından biçim verilerini alın ve Format.ps1xml kültür nesnelerinin geçerli görünümünü içeren bir dosya oluşturun.

Get-FormatData -TypeName System.Globalization.CultureInfo |
  Export-FormatData -Path $HOME\Format\CultureInfo.Format.ps1xml

CultureInfo.Format.ps1xmlDosyayı, 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.

CultureInfo.Format.ps1xmlDosya 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 ekleyerek Takvim özelliği için yeni bir sütun oluşturun <TableColumnHeader> . Takvim özelliğinin değeri uzun olabilir, bu nedenle bir 45 karakter değeri olarak belirtin <Width> .

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

Ve etiketlerini kullanarak tablo satırlarına Takvim için yeni bir sütun öğesi ekleyin <TableColumnItem> <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>

Dosyayı kaydedin ve kapatın. Update-FormatDataYeni biçim dosyasını geçerli PowerShell oturumuna eklemek için kullanın.

Bu örnek, yeni dosyayı özgün dosyadan daha yüksek öncelikli bir sıraya 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 Takvim özelliğini içeren çıktıyı yazın 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 PowerShell kaynak kodu deposunda . xsd biçiminde bulunabilir.

Her bir dosyanın Viewdefinitions bölümünde Format.ps1xml <View> her bir görünümü tanımlayan etiketler bulunur. Tipik bir <View> etiket aşağıdaki etiketleri içerir:

  • <Name> görünümün adını tanımlar.
  • <ViewSelectedBy> görünümün geçerli olduğu 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 bir öğenin nasıl görüntüleneceğini belirten etiketleri içerir.

Etikete göre viewSelected

<ViewSelectedBy>Etiketi, <TypeName> görünümün uygulandığı her nesne türü için bir etiket içerebilir. Ya da <SelectionSetName> bir etiketi kullanarak başka bir yerde tanımlanmış bir seçim kümesine başvuruda bulunan bir etiketi içerebilir <SelectionSet> .

GroupBy etiketi

<GroupBy>Etiketi, <PropertyName> öğelerin gruplandırılacağı nesne özelliğini belirten bir etiket içerir. Ayrıca <Label> , her grup için etiket olarak kullanılacak bir dize veya etiket <CustomControlName> kullanılarak tanımlanmış özel bir denetime başvuran bir etiketi içeren bir etiketi de içerir <Control> . <Control>Etiket bir <Name> etiket ve <CustomControl> etiket içerir.

TableControlTag

<TableControl>Etiket genellikle <TableHeaders> <TableRowEntries> tablo kafaları ve satırları için biçimlendirmeyi tanımlayan etiketler içerir. <TableHeaders>Etiket genellikle <TableColumnHeader> <Label> , ve etiketlerinin bulunduğu etiketleri içerir <Width> <Alignment> . <TableRowEntries>Etiketi, <TableRowEntry> tablodaki her satır için Etiketler içerir. <TableRowEntry>Etiketi, <TableColumnItems> <TableColumnItem> satırdaki her bir sütun için bir etiket içeren bir etiket içerir. Genellikle etiketi, <TableColumnItem> <PropertyName> tanımlı konumda görüntülenecek nesne özelliğini tanımlayan bir etiketi veya <ScriptBlock> konumda görüntülenecek sonucu hesaplayan betik kodunu içeren bir etiketi içerir.

Not

Betik blokları, hesaplanan sonuçların yararlı olacağı konumlarda başka yerlerde de kullanılabilir.

<TableColumnItem>Etiketi, <FormatString> özelliğinin veya hesaplanan sonuçların nasıl görüntüleneceğini belirten bir etiket de içerebilir.

ListControl etiketi

<ListControl>Etiket genellikle bir etiketi içerir <ListEntries> . <ListEntries>Etiket bir etiket içerir <ListEntry> . <ListEntry>Etiket bir etiket içerir <ListItems> . <ListItems>Etiketi Etiketler içeren <ListItem> Etiketler içerir <PropertyName> . <PropertyName>Etiketler, 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ımlanmışsa, <ListControl> ve <ListEntry> etiketleri <EntrySelectedBy> bir veya daha fazla etiket içeren bir etiket de içerebilir <TypeName> . Bu <TypeName> Etiketler, <ListControl> etiketin görüntülemesi amaçlanan nesne türünü belirtir.

WideControl etiketi

<WideControl>Etiket genellikle bir etiketi içerir <WideEntries> . <WideEntries>Etikette bir veya daha fazla <WideEntry> etiket var. Bir <WideEntry> etiket genellikle <PropertyName> görünümde belirtilen konumda görüntülenecek özelliği belirten bir etiket içerir. <PropertyName>Etiketi, <FormatString> özelliğin nasıl görüntüleneceğini belirten bir etiket içerebilir.

CustomControl etiketi

Etiketi, bir <CustomControl> Biçim tanımlamak için bir betik bloğu kullanmanıza imkan sağlar. Bir <CustomControl> etiket genellikle <CustomEntries> birden çok etiket içeren bir etiketi içerir <CustomEntry> . Her <CustomEntry> etiket,,,, <CustomItem> <Text> <Indentation> <ExpressionBinding> ve etiketleri dahil olmak üzere görünümde belirtilen konumun içeriğini ve biçimlendirmesini belirten çeşitli Etiketler içerebilen bir etiket içerir <NewLine> .

İzleme Format.ps1XML dosya kullanımı

Dosyaların yüklenmesinde veya uygulamasındaki hataları algılamak için Format.ps1xml , Trace-Command ad parametresinin değeri olarak aşağıdaki biçim bileşenlerinden herhangi birine sahip cmdlet 'ini kullanın:

  • Formatfileyüklenmekte yükleme
  • FormatViewBinding

Daha fazla bilgi için bkz. Trace-Command ve Get-TraceSource.

Format.ps1XML dosyasını imzalama

Dosyanın kullanıcılarını korumak Format.ps1xml için dijital imza kullanarak dosyayı imzalar. Daha fazla bilgi için bkz. about_Signing.

Özel görünüm için Format-Table XML

Aşağıdaki XML örneği tarafından oluşturulan Format-Table System.IO.DirectoryInfo ve System.IO.FileInfo nesneleri için özel bir görünüm Get-ChildItem oluşturur. Özel görünüm mygciview olarak adlandırılmıştır ve CreationTime sütununu tabloya ekler.

Özel görünümü oluşturmak için ve Get-FormatData Export-FormatData cmdlet'lerini kullanarak bir dosya .ps1xml oluşturun. Ardından, özel .ps1xml görünümünüz için kodu oluşturmak üzere dosyanızı düzenleyin. Dosya, .ps1xml PowerShell'in erişebilirsiniz herhangi bir dizinde depolanmış olabilir. Örneğin, bir alt $HOME dizini.

Dosya .ps1xml oluşturulduktan sonra, görünümü geçerli Update-FormatData PowerShell oturumuna dahil etmek için cmdlet'ini kullanın. Veya tüm PowerShell oturumlarında kullanılabilir görünüme ihtiyacınız varsa update komutunu PowerShell profilinize ekleyin.

Bu örnekte, özel görünümün tablo biçimini kullanması gerekir, aksi takdirde başarısız Format-Table olur.

Görünüm Format-Table parametresiyle birlikte kullanarak özel görünümün adını, mygciview'u belirtin ve tablonun çıkışını CreationTime sütunuyla biçimlendirin. Komutun nasıl çalıştırıldıklarının bir örneği için bkz. Format-Table.

Not

Özel bir görünüm oluşturmak için kaynak koddan XML biçimlendirmesini alabiliyor olsa da, istenen sonucu elde etmek için daha fazla geliştirme gerekli olabilir.

Aşağıdaki Get-FormatData komutta, tüm yerel biçimlendirme bilgilerini döndürülen emin olmak için PowerShellVersion parametresi için bir alternatif vardır. Belirli -PowerShellVersion $PSVersionTable.PSVersion bir PowerShell sürümü yerine 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 bkz.

Export-FormatData

Get-FormatData

Get-TraceSource

Biçim Şeması XML Başvurusu

Trace-Command

Update-FormatData

PowerShell Biçimlendirme Dosyası Yazma