about_Format.ps1xml

Deskripsi singkat

Dimulai di PowerShell 6, tampilan default untuk objek ditentukan dalam kode sumber PowerShell.

Anda dapat membuat file Anda sendiri Format.ps1xml untuk mengubah tampilan objek atau untuk menentukan tampilan default untuk jenis objek baru yang Anda buat di PowerShell.

Deskripsi panjang

Dimulai di PowerShell 6, tampilan default ditentukan dalam kode sumber PowerShell. File Format.ps1xml dari PowerShell 5.1 dan versi yang lebih lama tidak ada di PowerShell 6 dan versi yang lebih baru.

Kode sumber PowerShell menentukan tampilan default objek di konsol PowerShell. Anda dapat membuat file Anda sendiri Format.ps1xml untuk mengubah tampilan objek atau untuk menentukan tampilan default untuk jenis objek baru yang Anda buat di PowerShell.

Saat PowerShell menampilkan objek, powerShell menggunakan data dalam file pemformatan terstruktur untuk menentukan tampilan default objek. Data dalam file pemformatan menentukan apakah objek dirender dalam tabel atau dalam daftar, dan menentukan properti mana yang ditampilkan secara default.

Pemformatan hanya memengaruhi tampilan. Ini tidak memengaruhi properti objek mana yang diteruskan ke alur atau bagaimana properti tersebut diteruskan. Format.ps1xml file tidak dapat digunakan untuk menyesuaikan format output untuk tabel hash.

File .ps1xml pemformatan dapat menentukan empat tampilan berbeda dari setiap objek:

  • Tabel
  • Daftar
  • Lebar
  • Adat

Misalnya, ketika output Get-ChildItem perintah disalurkan ke Format-List perintah, Format-List menggunakan tampilan daftar yang ditentukan dalam kode sumber untuk menentukan cara menampilkan file dan objek folder sebagai daftar.

Saat file pemformatan menyertakan lebih dari satu tampilan objek, PowerShell menerapkan tampilan pertama yang ditemukannya.

Dalam file kustom Format.ps1xml , tampilan ditentukan oleh sekumpulan tag XML yang menjelaskan nama tampilan, jenis objek yang dapat diterapkan, header kolom, dan properti yang ditampilkan dalam isi tampilan. Format dalam Format.ps1xml file diterapkan tepat sebelum data disajikan kepada pengguna.

Membuat file Format.ps1xml baru

Untuk mengubah format tampilan tampilan objek yang sudah ada, atau menambahkan tampilan untuk objek baru, buat file Anda sendiri Format.ps1xml , lalu tambahkan ke sesi PowerShell Anda.

Untuk membuat Format.ps1xml file untuk menentukan tampilan kustom, gunakan cmdlet Get-FormatData dan Export-FormatData . Gunakan editor teks untuk mengedit file. File dapat disimpan ke direktori apa pun yang dapat diakses PowerShell, seperti subdirektori .$HOME

Untuk mengubah pemformatan tampilan saat ini, temukan tampilan dalam file pemformatan, lalu gunakan tag untuk mengubah tampilan. Untuk membuat tampilan untuk jenis objek baru, buat tampilan baru, atau gunakan tampilan yang sudah ada sebagai model. Tag dijelaskan di bagian berikutnya. Anda kemudian dapat menghapus semua tampilan lain dalam file sehingga perubahannya jelas bagi siapa pun yang memeriksa file.

Setelah Anda menyimpan perubahan, gunakan Update-FormatData untuk menambahkan file baru ke sesi PowerShell Anda. Jika Anda ingin tampilan Anda lebih diutamakan daripada tampilan yang ditentukan dalam file bawaan, gunakan parameter PrependPath . Update-FormatData hanya memengaruhi sesi saat ini. Untuk membuat perubahan pada semua sesi mendatang, tambahkan perintah ke Update-FormatData profil PowerShell Anda.

Contoh: Menambahkan data kalender ke objek budaya

Contoh ini menunjukkan cara mengubah pemformatan objek budaya System.Globalization.CultureInfo yang dihasilkan oleh Get-Culture cmdlet dalam sesi PowerShell saat ini. Perintah dalam contoh menambahkan properti Kalender ke tampilan tampilan tabel default objek budaya.

Untuk memulai, dapatkan data format dari file kode sumber dan buat Format.ps1xml file yang berisi tampilan objek budaya saat ini.

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

CultureInfo.Format.ps1xml Buka file di XML atau editor teks apa pun, seperti Visual Studio Code. XML berikut mendefinisikan tampilan objek CultureInfo .

File CultureInfo.Format.ps1xml akan terlihat seperti sampel berikut:

<?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>

Buat kolom baru untuk properti Kalender dengan menambahkan sekumpulan <TableColumnHeader> tag baru. Nilai properti Kalender bisa panjang, jadi tentukan nilai 45 karakter sebagai <Width>.

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

Tambahkan item kolom baru untuk Kalender di baris tabel menggunakan <TableColumnItem> tag dan <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>

Simpan dan tutup file. Gunakan Update-FormatData untuk menambahkan file format baru ke sesi PowerShell saat ini.

Contoh ini menggunakan parameter PrependPath untuk menempatkan file baru dalam urutan prioritas yang lebih tinggi daripada file asli. Untuk informasi selengkapnya, lihat Update-FormatData.

Update-FormatData -PrependPath $HOME\Format\CultureInfo.Format.ps1xml

Untuk menguji perubahan, ketik Get-Culture dan tinjau output yang menyertakan properti Kalender .

Get-Culture
LCID  Name   Calendar                                DisplayName
----  ----   --------                                -----------
1033  en-US  System.Globalization.GregorianCalendar  English (United States)

XML dalam file Format.ps1xml

Definisi skema lengkap dapat ditemukan di Format.xsd di repositori kode sumber PowerShell di GitHub.

Bagian ViewDefinitions dari setiap Format.ps1xml file berisi <View> tag yang menentukan setiap tampilan. Tag umum <View> mencakup tag berikut:

  • <Name> mengidentifikasi nama tampilan.
  • <ViewSelectedBy> menentukan jenis objek atau jenis yang diterapkan tampilan.
  • <GroupBy> menentukan bagaimana item dalam tampilan akan digabungkan dalam grup.
  • <TableControl>, , <ListControl><WideControl>, dan <CustomControl> berisi tag yang menentukan bagaimana setiap item akan ditampilkan.

Tag ViewSelectedBy

Tag <ViewSelectedBy> dapat berisi <TypeName> tag untuk setiap jenis objek yang diterapkan tampilan. Atau, ini dapat berisi <SelectionSetName> tag yang mereferensikan kumpulan pilihan yang ditentukan di tempat lain dengan menggunakan <SelectionSet> tag.

Tag GroupBy

Tag <GroupBy> berisi <PropertyName> tag yang menentukan properti objek tempat item akan dikelompokkan. Ini juga berisi <Label> tag yang menentukan string yang akan digunakan sebagai label untuk setiap grup atau <CustomControlName> tag yang mereferensikan kontrol kustom yang ditentukan di tempat lain menggunakan <Control> tag. Tag <Control> berisi <Name> tag dan <CustomControl> tag.

TableControlTag

Tag <TableControl> biasanya berisi <TableHeaders> tag dan <TableRowEntries> yang menentukan pemformatan untuk kepala dan baris tabel. Tag <TableHeaders> biasanya berisi <TableColumnHeader> tag yang berisi <Label>, <Width>, dan <Alignment> tag. Tag <TableRowEntries> berisi <TableRowEntry> tag untuk setiap baris dalam tabel. Tag <TableRowEntry> berisi <TableColumnItems> tag yang berisi <TableColumnItem> tag untuk setiap kolom dalam baris. Biasanya, <TableColumnItem> tag berisi <PropertyName> tag yang mengidentifikasi properti objek yang akan ditampilkan di lokasi yang <ScriptBlock> ditentukan, atau tag yang berisi kode skrip yang menghitung hasil yang akan ditampilkan di lokasi.

Catatan

Blok skrip juga dapat digunakan di tempat lain di lokasi di mana hasil terhitung dapat berguna.

Tag <TableColumnItem> juga dapat berisi <FormatString> tag yang menentukan bagaimana properti atau hasil terhitung akan ditampilkan.

Tag ListControl

Tag <ListControl> biasanya berisi <ListEntries> tag. Tag <ListEntries> berisi <ListEntry> tag. Tag <ListEntry> berisi <ListItems> tag. Tag <ListItems> berisi <ListItem> tag, yang berisi <PropertyName> tag. Tag <PropertyName> menentukan properti objek yang akan ditampilkan di lokasi yang ditentukan dalam daftar. Jika pilihan tampilan ditentukan menggunakan kumpulan pilihan, <ListControl> tag dan <ListEntry> juga dapat berisi <EntrySelectedBy> tag yang berisi satu atau beberapa <TypeName> tag. Tag ini <TypeName> menentukan jenis objek yang <ListControl> ingin ditampilkan tag.

Tag WideControl

Tag <WideControl> biasanya berisi <WideEntries> tag. Tag <WideEntries> berisi satu atau beberapa <WideEntry> tag. Tag <WideEntry> berisi satu <WideItem> tag.

Tag <WideItem> harus menyertakan <PropertyName> tag atau <ScriptBlock> tag. Tag <PropertyName> menentukan properti yang akan ditampilkan di lokasi yang ditentukan dalam tampilan. Tag <ScriptBlock> menentukan skrip untuk dievaluasi dan ditampilkan di lokasi yang ditentukan dalam tampilan.

Tag <WideItem> dapat berisi <FormatString> tag yang menentukan cara menampilkan properti.

Tag CustomControl

Tag <CustomControl> memungkinkan Anda menggunakan blok skrip untuk menentukan format. Tag <CustomControl> biasanya berisi <CustomEntries> tag yang berisi beberapa <CustomEntry> tag. Setiap <CustomEntry> tag berisi <CustomItem> tag yang dapat berisi berbagai tag yang menentukan konten dan pemformatan lokasi yang ditentukan dalam tampilan, termasuk <Text>tag , , <Indentation><ExpressionBinding>, dan <NewLine> .

Melacak penggunaan file Format.ps1xml

Untuk mendeteksi kesalahan dalam pemuatan atau aplikasi Format.ps1xml file, gunakan Trace-Command cmdlet dengan salah satu komponen format berikut sebagai nilai parameter Nama :

  • FormatFileLoading
  • FormatViewBinding

Untuk informasi selengkapnya, lihat Trace-Command dan Get-TraceSource.

Menandatangani file Format.ps1xml

Untuk melindungi pengguna file Anda Format.ps1xml , tanda tangani file menggunakan tanda tangan digital. Untuk informasi selengkapnya, lihat about_Signing.

Sampel XML untuk tampilan kustom Format-Tabel

Sampel XML berikut membuat Format-Table tampilan kustom untuk objek System.IO.DirectoryInfo dan System.IO.FileInfo yang dibuat oleh Get-ChildItem. Tampilan kustom diberi nama mygciview dan menambahkan kolom CreationTime ke tabel.

Untuk membuat tampilan kustom, gunakan Get-FormatData cmdlet dan Export-FormatData untuk menghasilkan .ps1xml file. Kemudian, edit file Anda .ps1xml untuk membuat kode untuk tampilan kustom Anda. File .ps1xml dapat disimpan di direktori apa pun yang dapat diakses PowerShell. Misalnya, subdirektori dari $HOME.

.ps1xml Setelah file dibuat, gunakan Update-FormatData cmdlet untuk menyertakan tampilan dalam sesi PowerShell saat ini. Atau, tambahkan perintah pembaruan ke profil PowerShell Anda jika Anda memerlukan tampilan yang tersedia di semua sesi PowerShell.

Untuk contoh ini, tampilan kustom harus menggunakan format tabel, jika tidak, Format-Table gagal.

Gunakan Format-Table dengan parameter Tampilan untuk menentukan nama tampilan kustom, mygciview, dan memformat output tabel dengan kolom CreationTime. Untuk contoh bagaimana perintah dijalankan, lihat Format-Tabel.

Catatan

Meskipun Anda bisa mendapatkan XML pemformatan dari kode sumber untuk membuat tampilan kustom, lebih banyak pengembangan mungkin diperlukan untuk mendapatkan hasil yang diinginkan.

Dalam perintah berikut Get-FormatData , ada alternatif untuk parameter PowerShellVersion untuk memastikan bahwa semua informasi pemformatan lokal dikembalikan. Gunakan -PowerShellVersion $PSVersionTable.PSVersion daripada versi PowerShell tertentu.

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>

Baca juga