about_Types.ps1xml
Deskripsi singkat
Menjelaskan cara menggunakan Types.ps1xml
file untuk memperluas jenis objek yang digunakan di PowerShell.
Deskripsi panjang
Data jenis yang diperluas menentukan properti dan metode tambahan ("anggota") dari jenis objek di PowerShell. Ada dua teknik untuk menambahkan data jenis yang diperluas ke sesi PowerShell.
Types.ps1xml
file: File XML yang menentukan data jenis yang diperluas.Update-TypeData
: Cmdlet yang memuatTypes.ps1xml
ulang file dan menentukan data yang diperluas untuk jenis dalam sesi saat ini.
Topik ini menjelaskan Types.ps1xml
file. Untuk informasi selengkapnya tentang menggunakan Update-TypeData
cmdlet untuk menambahkan data tipe yang diperluas dinamis ke sesi saat ini lihat Update-TypeData.
Tentang data jenis yang diperluas
Data jenis yang diperluas menentukan properti dan metode tambahan ("anggota") dari jenis objek di PowerShell. Anda dapat memperluas jenis apa pun yang didukung oleh PowerShell dan menggunakan properti dan metode yang ditambahkan dengan cara yang sama seperti Anda menggunakan properti yang ditentukan pada jenis objek.
Misalnya, PowerShell menambahkan properti DateTime ke semua System.DateTime
objek, seperti Get-Date
yang dikembalikan cmdlet.
(Get-Date).DateTime
Sunday, January 29, 2012 9:43:57 AM
Anda tidak akan menemukan properti DateTime dalam deskripsi struktur System.DateTime , karena PowerShell menambahkan properti dan hanya terlihat di PowerShell.
PowerShell secara internal mendefinisikan sekumpulan jenis yang diperluas secara default. Informasi jenis ini dimuat di setiap sesi PowerShell saat startup. Properti DateTime adalah bagian dari set default ini. Sebelum PowerShell 6, definisi jenis disimpan Types.ps1xml
file di direktori penginstalan PowerShell ($PSHOME
).
Menambahkan data tipe yang diperluas ke PowerShell
Ada tiga sumber data jenis yang diperluas dalam sesi PowerShell.
Data jenis yang diperluas ditentukan oleh PowerShell dan dimuat secara otomatis ke setiap sesi PowerShell. Dimulai dengan PowerShell 6, informasi ini dikompilasi ke dalam PowerShell dan tidak lagi dikirim dalam
Types.ps1xml
file.File
Types.ps1xml
yang diekspor modul dimuat ketika modul diimpor ke sesi saat ini.Data jenis yang diperluas yang ditentukan dengan menggunakan
Update-TypeData
cmdlet ditambahkan hanya ke sesi saat ini. Ini tidak disimpan dalam file.
Dalam sesi, data jenis yang diperluas dari tiga sumber diterapkan ke objek dengan cara yang sama dan tersedia pada semua objek dari jenis yang ditentukan.
Cmdlet TypeData
Cmdlet berikut disertakan dalam modul Microsoft.PowerShell.Utility di PowerShell 3.0 dan yang lebih baru.
Get-TypeData
: Mendapatkan data jenis yang diperluas dalam sesi saat ini.Update-TypeData
: Memuat ulangTypes.ps1xml
file. Menambahkan data tipe yang diperluas ke sesi saat ini.Remove-TypeData
: Menghapus data jenis yang diperluas dari sesi saat ini.
Untuk informasi selengkapnya tentang cmdlet ini, lihat topik bantuan untuk setiap cmdlet.
File Type.ps1xml bawaan
File Types.ps1xml
dalam $PSHOME
direktori ditambahkan secara otomatis ke setiap sesi.
File Types.ps1xml
di direktori penginstalan PowerShell ($PSHOME
) adalah file teks berbasis XML yang memungkinkan Anda menambahkan properti dan metode ke objek yang digunakan di PowerShell. PowerShell memiliki file bawaan Types.ps1xml
yang menambahkan beberapa elemen ke jenis .NET, tetapi Anda dapat membuat file tambahan Types.ps1xml
untuk memperluas jenis lebih lanjut.
Misalnya, secara default, objek array (System.Array
) memiliki properti Panjang yang mencantumkan jumlah objek dalam array. Namun, karena nama Panjang tidak menjelaskan properti dengan jelas, PowerShell menambahkan properti alias bernama Count yang menampilkan nilai yang sama. XML berikut menambahkan properti Hitung ke System.Array
jenis .
<Type>
<Name>System.Array</Name>
<Members>
<AliasProperty>
<Name>Count</Name>
<ReferencedMemberName>
Length
</ReferencedMemberName>
</AliasProperty>
</Members>
</Type>
Untuk mendapatkan AliasProperty baru, gunakan Get-Member
perintah pada array apa pun, seperti yang ditunjukkan dalam contoh berikut.
Get-Member -InputObject (1,2,3,4)
Perintah mengembalikan hasil berikut.
Name MemberType Definition
---- ---------- ----------
Count AliasProperty Count = Length
Address Method System.Object& Address(Int32)
Clone Method System.Object Clone()
CopyTo Method System.Void CopyTo(Array array, Int32 index):
Equals Method System.Boolean Equals(Object obj)
Get Method System.Object Get(Int32)
# ...
Akibatnya, Anda dapat menggunakan properti Hitung atau properti Panjang array di PowerShell. Contohnya:
(1, 2, 3, 4).count
4
(1, 2, 3, 4).length
4
Membuat file Type.ps1xml baru
File .ps1xml
yang diinstal dengan PowerShell ditandatangani secara digital untuk mencegah perubahan karena pemformatan dapat menyertakan blok skrip. Oleh karena itu, untuk menambahkan properti atau metode ke jenis .NET, buat file Anda sendiri Types.ps1xml
, lalu tambahkan ke sesi PowerShell Anda.
Untuk membuat file baru, mulailah dengan menyalin file yang sudah ada Types.ps1xml
. File baru dapat memiliki nama apa pun, tetapi harus memiliki .ps1xml
ekstensi nama file. Anda dapat menempatkan file baru di direktori apa pun yang dapat diakses oleh PowerShell, tetapi berguna untuk menempatkan file di direktori penginstalan PowerShell ($PSHOME
) atau di subdirektori direktori penginstalan.
Ketika Anda telah menyimpan file baru, gunakan Update-TypeData
cmdlet untuk menambahkan file baru ke sesi PowerShell Anda. Jika Anda ingin jenis Anda lebih diutamakan daripada jenis bawaan yang ditentukan, gunakan parameter PrependData cmdlet Update-TypeData
. Update-TypeData
hanya memengaruhi sesi saat ini. Untuk membuat perubahan pada semua sesi mendatang, ekspor konsol, atau tambahkan Update-TypeData
perintah ke profil PowerShell Anda.
Type.ps1xml dan Add-Member
File Types.ps1xml
menambahkan properti dan metode ke semua instans objek dari jenis .NET yang ditentukan dalam sesi PowerShell yang terpengaruh. Namun, jika Anda perlu menambahkan properti atau metode hanya ke satu instans objek, gunakan Add-Member
cmdlet .
Untuk informasi selengkapnya, lihat Add-Member.
Contoh: Menambahkan anggota Usia ke objek FileInfo
Contoh ini menunjukkan cara menambahkan properti Usia ke objek System.IO.FileInfo . Usia file adalah perbedaan antara waktu pembuatannya dan waktu saat ini dalam hari.
Karena properti Usia dihitung dengan menggunakan blok skrip, temukan tag yang <ScriptProperty>
akan digunakan sebagai model untuk properti Usia baru.
Simpan kode XML berikut ke file $PSHOME\MyTypes.ps1xml
.
<?xml version="1.0" encoding="utf-8" ?>
<Types>
<Type>
<Name>System.IO.FileInfo</Name>
<Members>
<ScriptProperty>
<Name>Age</Name>
<GetScriptBlock>
((Get-Date) - ($this.CreationTime)).Days
</GetScriptBlock>
</ScriptProperty>
</Members>
</Type>
</Types>
Jalankan Update-TypeData
untuk menambahkan file baru Types.ps1xml
ke sesi saat ini. Perintah menggunakan parameter PrependData untuk menempatkan file baru dalam urutan prioritas yang lebih tinggi dari definisi asli.
Untuk informasi selengkapnya tentang Update-TypeData
, lihat Update-TypeData.
Update-Typedata -PrependPath $PSHOME\MyTypes.ps1xml
Untuk menguji perubahan, jalankan Get-ChildItem
perintah untuk mendapatkan file PowerShell.exe di $PSHOME
direktori, lalu pipa file ke Format-List
cmdlet untuk mencantumkan semua properti file. Akibat perubahan tersebut, properti Usia muncul dalam daftar.
Get-ChildItem $PSHOME\pwsh.exe | Select-Object Age
142
XML dalam file Type.ps1xml
Definisi skema lengkap dapat ditemukan di Type.xsd di repositori kode sumber PowerShell di GitHub.
Tag <Types>
menyertakan semua jenis yang ditentukan dalam file. Seharusnya hanya ada satu <Types>
tag.
Setiap jenis .NET yang disebutkan dalam file harus diwakili oleh <Type>
tag.
Tag jenis harus berisi tag berikut:
<Name>
: Menyertakan nama jenis .NET yang terpengaruh.
<Members>
: Menyertakan tag untuk properti dan metode baru yang ditentukan untuk jenis .NET.
Salah satu tag anggota berikut dapat berada di <Members>
dalam tag.
AliasProperty
Menentukan nama baru untuk properti yang sudah ada.
Tag <AliasProperty>
harus memiliki <Name>
tag yang menentukan nama properti baru dan <ReferencedMemberName>
tag yang menentukan properti yang sudah ada.
Misalnya, properti Alias hitung adalah alias untuk properti Panjang objek array.
<Type>
<Name>System.Array</Name>
<Members>
<AliasProperty>
<Name>Count</Name>
<ReferencedMemberName>Length</ReferencedMemberName>
</AliasProperty>
</Members>
</Type>
CodeMethod
Mereferensikan metode statis dari kelas .NET.
Tag <CodeMethod>
harus memiliki <Name>
tag yang menentukan nama metode baru dan <CodeReference>
tag yang menentukan kode tempat metode ditentukan.
Misalnya, metode ToString adalah nama definisi kode Microsoft.PowerShell.ToStringCodeMethods .
<Type>
<Name>System.Xml.XmlNode</Name>
<Members>
<CodeMethod>
<Name>ToString</Name>
<CodeReference>
<TypeName>Microsoft.PowerShell.ToStringCodeMethods</TypeName>
<MethodName>XmlNode</MethodName>
</CodeReference>
</CodeMethod>
</Members>
</Type>
CodeProperty
Mereferensikan metode statis dari kelas .NET.
Tag <CodeProperty>
harus memiliki <Name>
tag yang menentukan nama properti baru dan <GetCodeReference>
tag yang menentukan kode tempat properti ditentukan.
Misalnya, properti System.IO.DirectoryInfo
Mode objek adalah properti kode yang ditentukan dalam penyedia FileSystem PowerShell.
<Type>
<Name>System.IO.DirectoryInfo</Name>
<Members>
<CodeProperty>
<Name>Mode</Name>
<GetCodeReference>
<TypeName>
Microsoft.PowerShell.Commands.FileSystemProvider
</TypeName>
<MethodName>Mode</MethodName>
</GetCodeReference>
</CodeProperty>
</Members>
</Type>
Set Anggota
Menentukan kumpulan anggota (properti dan metode).
Tag <MemberSet>
muncul dalam tag utama <Members>
. Tag harus mengapit tag yang <Name>
mengelilingi nama set anggota dan tag sekunder <Members>
yang mengelilingi anggota (properti dan metode) dalam set. Salah satu tag yang membuat properti (seperti <NoteProperty>
atau <ScriptProperty>
) atau metode (seperti <Method>
atau <ScriptMethod>
) dapat menjadi anggota set.
Dalam Types.ps1xml
file, <MemberSet>
tag digunakan untuk menentukan tampilan default objek .NET di PowerShell. Dalam hal ini, nama kumpulan anggota (nilai dalam <Name>
tag) selalu PsStandardMembers, dan nama properti (nilai <Name>
tag) adalah salah satu dari berikut ini:
DefaultDisplayProperty
: Satu properti objek.DefaultDisplayPropertySet
: Satu atau beberapa properti objek.DefaultKeyPropertySet
: Satu atau beberapa properti kunci objek. Properti kunci mengidentifikasi instans nilai properti, seperti jumlah ID item dalam riwayat sesi.
Misalnya, XML berikut menentukan tampilan default layanan (System.ServiceProcess.ServiceController
objek) yang dikembalikan oleh Get-Service
cmdlet. Ini mendefinisikan kumpulan anggota bernama PsStandardMembers yang terdiri dari properti default yang diatur dengan properti Status, Nama, dan DisplayName .
<Type>
<Name>System.ServiceProcess.ServiceController</Name>
<Members>
<MemberSet>
<Name>PSStandardMembers</Name>
<Members>
<PropertySet>
<Name>DefaultDisplayPropertySet</Name>
<ReferencedProperties>
<Name>Status</Name>
<Name>Name</Name>
<Name>DisplayName</Name>
</ReferencedProperties>
</PropertySet>
</Members>
</MemberSet>
</Members>
</Type>
<Method>
: Mereferensikan metode asli dari objek yang mendasar.
<Methods>
: Kumpulan metode objek.
NoteProperty
Menentukan properti dengan nilai statis.
Tag <NoteProperty>
harus memiliki <Name>
tag yang menentukan nama properti baru dan <Value>
tag yang menentukan nilai properti.
Misalnya, XML berikut membuat properti Status untuk objek System.IO.DirectoryInfo . Nilai properti Status selalu Berhasil.
<Type>
<Name>System.IO.DirectoryInfo</Name>
<Members>
<NoteProperty>
<Name>Status</Name>
<Value>Success</Value>
</NoteProperty>
</Members>
</Type>
PropertiSet
Properti yang mengambil argumen dan mengembalikan nilai.
<Properties>
: Kumpulan properti objek.
<Property>
: Properti objek dasar.
<PropertySet>
: Mendefinisikan kumpulan properti objek.
Tag <PropertySet>
harus memiliki <Name>
tag yang menentukan nama kumpulan properti dan <ReferencedProperty>
tag yang menentukan properti. Nama properti diapit dalam <Name>
tag.
Di Types.ps1xml
, <PropertySet>
tag digunakan untuk menentukan kumpulan properti untuk tampilan default objek. Anda dapat mengidentifikasi tampilan default berdasarkan nilai PsStandardMembers dalam <Name>
tag <MemberSet>
tag.
Misalnya, XML berikut membuat PropertySet bernama DefaultDisplayPropertySet dengan tiga ReferencedProperties.
<Type>
<Name>System.ServiceProcess.ServiceController</Name>
<Members>
<MemberSet>
<Name>PSStandardMembers</Name>
<Members>
<PropertySet>
<Name>DefaultDisplayPropertySet</Name>
<ReferencedProperties>
<Name>Status</Name>
<Name>Name</Name>
<Name>DisplayName</Name>
</ReferencedProperties>
</PropertySet>
</Members>
</MemberSet>
</Members>
</Type>
ScriptMethod
Mendefinisikan metode yang nilainya adalah output dari skrip.
Tag <ScriptMethod>
harus memiliki <Name>
tag yang menentukan nama metode baru dan <Script>
tag yang menyertakan blok skrip yang mengembalikan hasil metode.
Misalnya, ConvertToDateTime
metode dan ConvertFromDateTime
objek manajemen (System.System.Management.ManagementObject
) adalah metode skrip yang menggunakan ToDateTime
metode statis dan ToDmtfDateTime
kelas System.Management.ManagementDateTimeConverter
.
<Type>
<Name>System.Management.ManagementObject</Name>
<Members>
<ScriptMethod>
<Name>ConvertToDateTime</Name>
<Script>
[System.Management.ManagementDateTimeConverter]::ToDateTime($args[0])
</Script>
</ScriptMethod>
<ScriptMethod>
<Name>ConvertFromDateTime</Name>
<Script>
[System.Management.ManagementDateTimeConverter]::ToDmtfDateTime($args[0])
</Script>
</ScriptMethod>
</Members>
</Type>
ScriptProperty
Menentukan properti yang nilainya adalah output dari skrip.
Tag <ScriptProperty>
harus memiliki <Name>
tag yang menentukan nama properti baru dan <GetScriptBlock>
tag yang menyertakan blok skrip yang mengembalikan nilai properti.
Misalnya, properti VersionInfo dari objek System.IO.FileInfo adalah properti skrip yang dihasilkan dari menggunakan properti FullName dari metode statis GetVersionInfo objek System.Diagnostics.FileVersionInfo .
<Type>
<Name>System.IO.FileInfo</Name>
<Members>
<ScriptProperty>
<Name>VersionInfo</Name>
<GetScriptBlock>
[System.Diagnostics.FileVersionInfo]::GetVersionInfo($this.FullName)
</GetScriptBlock>
</ScriptProperty>
</Members>
</Type>
Untuk informasi selengkapnya, lihat Kit Pengembangan Perangkat Lunak (SDK) Windows PowerShell.
Update-TypeData
Untuk memuat file Anda Types.ps1xml
ke dalam sesi PowerShell, jalankan Update-TypeData
cmdlet. Jika Anda ingin jenis dalam file Anda lebih diutamakan daripada jenis dalam file bawaan Types.ps1xml
, tambahkan parameter PrependData dari Update-TypeData
. Update-TypeData
hanya memengaruhi sesi saat ini. Untuk membuat perubahan pada semua sesi mendatang, ekspor sesi, atau tambahkan Update-TypeData
perintah ke profil PowerShell Anda.
Pengecualian yang terjadi di properti, atau dari menambahkan properti ke Update-TypeData
perintah, jangan laporkan kesalahan ke StdErr
. Ini untuk menekan pengecualian yang akan terjadi dalam banyak jenis umum selama pemformatan dan output. Jika Anda mendapatkan properti .NET, Anda dapat mengatasi penekanan pengecualian dengan menggunakan sintaks metode sebagai gantinya, seperti yang ditunjukkan dalam contoh berikut:
"hello".get_Length()
Perhatikan bahwa sintaks metode hanya dapat digunakan dengan properti .NET. Properti yang ditambahkan dengan menjalankan Update-TypeData
cmdlet tidak dapat menggunakan sintaks metode.
Menandatangani file Type.ps1xml
Untuk melindungi pengguna Types.ps1xml
file, Anda dapat menandatangani file menggunakan tanda tangan digital. Untuk informasi selengkapnya, lihat about_Signing.
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk