Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Deskripsi singkat
PowerShell menyediakan kemampuan untuk menambahkan properti baru secara dinamis dan mengubah pemformatan output objek ke alur.
Deskripsi panjang
Beberapa cmdlet PowerShell mengubah, mengelompokkan, atau memproses objek input menjadi objek output menggunakan parameter yang memungkinkan Anda membuat properti baru pada objek output tersebut. Anda dapat menggunakan parameter ini untuk menghasilkan properti baru yang dihitung pada objek output berdasarkan nilai objek input. Objek input dapat diakses menggunakan $_ variabel atau $PSItem otomatis dalam Expression anggota properti terhitung.
Properti terhitung didefinisikan sebagai hashtable yang berisi pasangan kunci-nilai yang menentukan nilai properti yang baru dihitung. Beberapa perintah mendukung pasangan kunci-nilai lain yang mengontrol bagaimana properti ditampilkan dalam output.
Cmdlet yang didukung
Cmdlet berikut mendukung nilai properti terhitung untuk parameter Properti. Cmdlet Format-* juga mendukung nilai terhitung untuk parameter GroupBy.
Daftar berikut menguraikan cmdlet yang mendukung properti terhitung dan pasangan kunci-nilai yang didukung setiap cmdlet.
Compare-ObjectExpression
ConvertTo-Html-
Name/Label- opsional (ditambahkan di PowerShell 6.x) Expression-
Width- opsional -
Alignment- opsional
-
Format-CustomExpression-
Depth- opsional
Format-List-
Name/Label- opsional Expression-
FormatString- opsional
Set pasangan kunci-nilai yang sama ini juga berlaku untuk nilai properti terhitung yang diteruskan ke parameter GroupBy untuk semua cmdlet
Format-*.-
Format-Table-
Name/Label- opsional Expression-
FormatString- opsional -
Width- opsional -
Alignment- opsional
-
Format-WideExpression-
FormatString- opsional
Group-ObjectExpression
Measure-Object- Hanya mendukung blokir skrip untuk ekspresi, bukan hashtable.
- Tidak didukung di PowerShell 5.1 dan yang lebih lama.
Select-Object-
Name/Label- opsional Expression
-
Sort-ObjectExpression-
Ascending/Descending- opsional
Nota
Nilai Expression dapat berupa blokir skrip alih-alih hashtable. Untuk informasi selengkapnya, lihat bagian Catatan.
Definisi kunci hashtable
-
Name/Label- Menentukan nama properti yang sedang dibuat. Anda dapat menggunakanNameatau aliasnya,Label, secara bergantian. -
Expression- String atau blok skrip yang digunakan untuk menghitung nilai properti baru. JikaExpressionadalah string, nilai ditafsirkan sebagai nama properti pada objek input. Ini adalah opsi yang lebih pendek daripadaExpression = { $_.<PropertyName> }. -
Alignment- Digunakan oleh cmdlet yang menghasilkan output tabular untuk menentukan bagaimana nilai ditampilkan dalam kolom. Nilainya harus'Left','Center', atau'Right'. -
FormatString- Menentukan string format yang menentukan bagaimana nilai diformat untuk output. Untuk informasi selengkapnya tentang string format, lihat jenis Format di .NET. -
Width- Menentukan kolom lebar maksimum dalam tabel saat nilai ditampilkan. Nilai harus lebih besar dari0. -
Depth- Parameter Kedalaman dariFormat-Custommenentukan kedalaman ekspansi untuk semua properti. KunciDepthmemungkinkan Anda menentukan kedalaman ekspansi per properti. -
Ascending/Descending- Memungkinkan Anda menentukan urutan pengurutan untuk satu atau beberapa properti. Ini adalah nilai boolean.
Anda tidak perlu mengeja kunci yang dapat di-hash selama awalan nama yang ditentukan tidak ambigu. Misalnya, Anda dapat menggunakan n alih-alih Name dan e alih-alih Expression.
Examples
Compare-Object
Dengan properti terhitung, Anda dapat mengontrol bagaimana properti objek input dibandingkan. Dalam contoh ini, daripada membandingkan nilai secara langsung, nilai dibandingkan dengan hasil operasi aritmatika (modulus 2).
Compare-Object @{p=1} @{p=2} -Property @{ Expression = { $_.p % 2 } }
$_.p % 2 SideIndicator
---------- -------------
0 =>
1 <=
ConvertTo-Html
ConvertTo-Html dapat mengonversi kumpulan objek ke tabel HTML.
Properti terhitung memungkinkan Anda mengontrol bagaimana tabel disajikan.
Get-Alias |
ConvertTo-Html Name,
Definition,
@{
Name='ParameterCount'
Expr={$_.Parameters.Keys.Count}
Align='Center'
} |
Out-File .\aliases.htm -Force
Contoh ini membuat tabel HTML yang berisi daftar alias PowerShell dan parameter angka untuk setiap perintah alias. Nilai kolom ParameterCount dipusatkan.
Format-Custom
Format-Custom menyediakan tampilan kustom objek dalam format yang mirip dengan definisi kelas. Objek yang lebih kompleks dapat berisi anggota yang sangat bersarang dengan jenis kompleks. Parameter Depth dari Format-Custom menentukan kedalaman ekspansi untuk semua properti. Kunci Depth memungkinkan Anda menentukan kedalaman ekspansi per properti.
Dalam contoh ini, kunci Depth menyederhanakan output kustom untuk cmdlet Get-Date.
Get-Date mengembalikan objek DateTime. Properti Date objek ini juga merupakan objek DateTime, sehingga objek ditumpuk.
Get-Date | Format-Custom @{Expr={$_.Date};Depth=1},TimeOfDay
class DateTime
{
$_.Date =
class DateTime
{
Date = 8/7/2020 12:00:00 AM
Day = 7
DayOfWeek = Friday
DayOfYear = 220
Hour = 0
Kind = Local
Millisecond = 0
Minute = 0
Month = 8
Second = 0
Ticks = 637323552000000000
TimeOfDay = 00:00:00
Year = 2020
DateTime = Friday, August 07, 2020 12:00:00 AM
}
TimeOfDay =
class TimeSpan
{
Ticks = 435031592302
Days = 0
Hours = 12
Milliseconds = 159
Minutes = 5
Seconds = 3
TotalDays = 0.503508787386574
TotalHours = 12.0842108972778
TotalMilliseconds = 43503159.2302
TotalMinutes = 725.052653836667
TotalSeconds = 43503.1592302
}
}
Format-List
Dalam contoh ini, kami menggunakan properti terhitung untuk mengubah nama dan format output dari Get-ChildItem.
Get-ChildItem *.json -File |
Format-List FullName,
@{
Name='Modified'
Expression={$_.LastWriteTime}
FormatString='O'
},
@{
Name='Size'
Expression={$_.Length/1KB}
FormatString='N2'
}
FullName : C:\Git\PS-Docs\PowerShell-Docs\.markdownlint.json
Modified : 2020-07-23T10:26:28.4092457-07:00
Size : 2.40
FullName : C:\Git\PS-Docs\PowerShell-Docs\.openpublishing.publish.config.json
Modified : 2020-07-23T10:26:28.4092457-07:00
Size : 2.25
FullName : C:\Git\PS-Docs\PowerShell-Docs\.openpublishing.redirection.json
Modified : 2020-07-27T13:05:24.3887629-07:00
Size : 324.60
Format-Table
Dalam contoh ini, properti terhitung menambahkan properti Type yang digunakan untuk mengklasifikasikan file berdasarkan jenis konten.
Get-ChildItem -File |
Sort-Object Extension |
Format-Table Name, Length -GroupBy @{
Name='Type'
Expression={
switch ($_.Extension) {
'.md' {'Content'}
'' {'Metacontent'}
'.ps1' {'Automation'}
'.yml' {'Automation'}
default {'Configuration'}
}
}
}
Type: Metacontent
Name Length
---- ------
ThirdPartyNotices 1229
LICENSE-CODE 1106
LICENSE 19047
Type: Configuration
Name Length
---- ------
.editorconfig 183
.gitattributes 419
.gitignore 228
.markdownlint.json 2456
.openpublishing.publish.config.json 2306
.openpublishing.redirection.json 332394
.localization-config 232
Type: Content
Name Length
---- ------
README.md 3355
CONTRIBUTING.md 247
Type: Automation
Name Length
---- ------
.openpublishing.build.ps1 796
build.ps1 7495
ci.yml 645
ci-steps.yml 2035
daily.yml 1271
Format-Wide
Cmdlet Format-Wide memungkinkan Anda menampilkan nilai satu properti untuk objek dalam koleksi sebagai daftar multi-kolom.
Untuk contoh ini, kita ingin melihat nama file dan ukuran (dalam kilobyte) sebagai daftar yang luas. Karena Format-Wide tidak menampilkan lebih dari satu properti, kami menggunakan properti terhitung untuk menggabungkan nilai dua properti ke dalam satu nilai.
Get-ChildItem -File |
Format-Wide -Property @{e={'{0} ({1:N2}kb)' -f $_.Name,($_.Length/1kb)}}
.editorconfig (0.18kb) .gitattributes (0.41kb)
.gitignore (0.22kb) .localization-config (0.23kb)
.markdownlint.json (2.40kb) .openpublishing.build.ps1 (0.78kb)
.openpublishing.publish.config.json (2.25kb) .openpublishing.redirection.json (324.60kb)
build.ps1 (7.32kb) ci.yml (0.63kb)
ci-steps.yml (1.99kb) CONTRIBUTING.md (0.24kb)
daily.yml (1.24kb) LICENSE (18.60kb)
LICENSE-CODE (1.08kb) README.md (3.28kb)
ThirdPartyNotices (1.20kb)
Group-Object
cmdlet Group-Object menampilkan objek dalam grup berdasarkan nilai properti tertentu. Dalam contoh ini, properti terhitung menghitung jumlah file dari setiap jenis konten.
Get-ChildItem -File |
Sort-Object Extension |
Group-Object -NoElement -Property @{
Expression={
switch ($_.Extension) {
'.md' {'Content'}
'' {'Metacontent'}
'.ps1' {'Automation'}
'.yml' {'Automation'}
default {'Configuration'}
}
}
}
Count Name
----- ----
5 Automation
7 Configuration
2 Content
3 Metacontent
Measure-Object
cmdlet Measure-Object menghitung properti numerik objek. Dalam contoh ini, kita menggunakan properti terhitung untuk mendapatkan hitungan angka antara 1 dan 10 yang dapat dibagi secara merata dengan 3.
Blok skrip mengembalikan $true jika angka dapat dibagi 3 dan $false untuk semua angka lainnya. Operasi Jumlah memperlakukan nilai $true sebagai nilai 1 dan $false sebagai 0.
1..10 | Measure-Object -Property {($_ % 3) -eq 0} -Sum
Count : 10
Average :
Sum : 3
Maximum :
Minimum :
StandardDeviation :
Property : ($_ % 3) -eq 0
Nota
Tidak seperti cmdlet lainnya, Measure-Object tidak menerima hashtable untuk properti terhitung. Anda harus menggunakan blokir skrip.
Select-Object
Anda dapat menggunakan properti terhitung untuk menambahkan anggota tambahan ke output objek dengan cmdlet Select-Object. Dalam contoh ini, kami mencantumkan alias PowerShell yang dimulai dengan huruf C. Menggunakan Select-Object, kami menghasilkan alias, cmdlet yang dipetakan, dan hitungan untuk jumlah parameter yang ditentukan untuk cmdlet. Dengan menggunakan properti terhitung, kita dapat membuat properti ParameterCount.
$aliases = Get-Alias c* |
Select-Object Name,
Definition,
@{
Name='ParameterCount'
Expr={$_.Parameters.Keys.Count}
}
$aliases | Get-Member
$aliases
TypeName: Selected.System.Management.Automation.AliasInfo
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Definition NoteProperty string Definition=Get-Content
Name NoteProperty string Name=cat
ParameterCount NoteProperty System.Int32 ParameterCount=21
Name Definition ParameterCount
---- ---------- --------------
cat Get-Content 21
cd Set-Location 15
cdd Push-MyLocation 1
chdir Set-Location 15
clc Clear-Content 20
clear Clear-Host 0
clhy Clear-History 17
cli Clear-Item 20
clp Clear-ItemProperty 22
cls Clear-Host 0
clv Clear-Variable 19
cnsn Connect-PSSession 29
compare Compare-Object 20
copy Copy-Item 24
cp Copy-Item 24
cpi Copy-Item 24
cpp Copy-ItemProperty 23
cvpa Convert-Path 13
Sort-Object
Dengan menggunakan properti terhitung, Anda dapat mengurutkan data dalam urutan yang berbeda per properti. Contoh ini mengurutkan data dari file CSV dalam urutan naik menurut Tanggal. Tetapi dalam setiap tanggal, ia mengurutkan baris dalam urutan menurun menurut UnitSold.
Import-Csv C:\temp\sales-data.csv |
Sort-Object Date, @{Expr={$_.UnitsSold}; Desc=$true}, Salesperson |
Select-Object Date, Salesperson, UnitsSold
Date Salesperson UnitsSold
---- ----------- ---------
2020-08-01 Sally 3
2020-08-01 Anne 2
2020-08-01 Fred 1
2020-08-02 Anne 6
2020-08-02 Fred 2
2020-08-02 Sally 0
2020-08-03 Anne 5
2020-08-03 Sally 3
2020-08-03 Fred 1
2020-08-04 Anne 2
2020-08-04 Fred 2
2020-08-04 Sally 2
Catatan
Anda dapat menentukan blokir skrip ekspresi secara langsung, sebagai argumen, daripada menentukannya sebagai
Expressionentri dalam hashtable. Misalnya:'1', '10', '2' | Sort-Object { [int] $_ }Contoh ini nyaman untuk cmdlet yang tidak memerlukan (atau dukungan) penamaan properti melalui kunci
Name, sepertiSort-Object,Group-Object, danMeasure-Object.Untuk cmdlet yang mendukung penamaan properti, blok skrip dikonversi ke string dan digunakan sebagai nama properti dalam output.
Expressionblok skrip berjalan dalam cakupan anak , yang berarti bahwa variabel pemanggil tidak dapat dimodifikasi secara langsung.Logika alur diterapkan ke output dari
Expressionblok skrip. Ini berarti bahwa menghasilkan array elemen tunggal menyebabkan array tersebut dibongkar.Untuk sebagian besar cmdlet, kesalahan di dalam blok skrip ekspresi diabaikan dengan diam-diam. Untuk
Sort-Object, kesalahan penghentian pernyataan dan penghentian skrip output tetapi tidak mengakhiri pernyataan.
Lihat juga
- about_Hash_Tables
- ConvertTo-Html
- Format-Kustom
- Daftar Format
- Format-Tabel
- Format-Wide
- Bandingkan Objek
- Objek Grup
- Objek Pengukuran
- Pilih Objek
- Objek Pengurutan
- jenis Format di .NET