Bab 5 - Pemformatan, alias, penyedia, perbandingan
Persyaratan
Modul PowerShell SQL Server diperlukan oleh beberapa contoh yang ditunjukkan dalam bab ini. Modul diinstal sebagai bagian dari SQL Server Management Studio (SSMS). Ini juga digunakan dalam bab berikutnya. Unduh dan instal di komputer lingkungan lab Windows 10 Anda.
Format Kanan
Di Bab 4, Anda belajar memfilter sejauh mungkin ke kiri. Aturan untuk memformat output perintah secara manual mirip dengan aturan tersebut kecuali perlu terjadi sejauh mungkin ke kanan.
Perintah format yang paling umum adalah Format-Table
dan Format-List
. Format-Wide
dan Format-Custom
juga dapat digunakan, tetapi kurang umum.
Seperti disebutkan dalam Bab 3, perintah yang mengembalikan lebih dari empat properti default ke daftar kecuali pemformatan kustom digunakan.
Get-Service -Name w32time | Select-Object -Property Status, DisplayName, Can*
Status : Running
DisplayName : Windows Time
CanPauseAndContinue : False
CanShutdown : True
CanStop : True
Format-Table
Gunakan cmdlet untuk mengambil alih pemformatan secara manual dan memperlihatkan output dalam tabel alih-alih daftar.
Get-Service -Name w32time | Select-Object -Property Status, DisplayName, Can* |
Format-Table
Status DisplayName CanPauseAndContinue CanShutdown CanStop
------ ----------- ------------------- ----------- -------
Running Windows Time False True True
Output default untuk Get-Service
adalah tiga properti dalam tabel.
Get-Service -Name w32time
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time
Format-List
Gunakan cmdlet untuk mengambil alih pemformatan default dan mengembalikan hasilnya dalam daftar.
Get-Service -Name w32time | Format-List
Name : w32time
DisplayName : Windows Time
Status : Running
DependentServices : {}
ServicesDependedOn : {}
CanPauseAndContinue : False
CanShutdown : True
CanStop : True
ServiceType : Win32ShareProcess
Perhatikan bahwa hanya pipa Get-Service
untuk Format-List
membuatnya mengembalikan properti tambahan. Ini tidak terjadi pada setiap perintah karena cara pemformatan untuk perintah tertentu disiapkan di belakang layar.
Hal nomor satu yang harus diperhatikan dengan cmdlet format adalah mereka menghasilkan objek format yang berbeda dari objek normal di PowerShell.
Get-Service -Name w32time | Format-List | Get-Member
TypeName: Microsoft.PowerShell.Commands.Internal.Format.FormatStartData
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
autosizeInfo Property Microsoft.PowerShell.Commands.Inter...
ClassId2e4f51ef21dd47e99d3c952918aff9cd Property string ClassId2e4f51ef21dd47e99d3c9...
groupingEntry Property Microsoft.PowerShell.Commands.Inter...
pageFooterEntry Property Microsoft.PowerShell.Commands.Inter...
pageHeaderEntry Property Microsoft.PowerShell.Commands.Inter...
shapeInfo Property Microsoft.PowerShell.Commands.Inter...
TypeName: Microsoft.PowerShell.Commands.Internal.Format.GroupStartData
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
ClassId2e4f51ef21dd47e99d3c952918aff9cd Property string ClassId2e4f51ef21dd47e99d3c9...
groupingEntry Property Microsoft.PowerShell.Commands.Inter...
shapeInfo Property Microsoft.PowerShell.Commands.Inter...
TypeName: Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
ClassId2e4f51ef21dd47e99d3c952918aff9cd Property string ClassId2e4f51ef21dd47e99d3c9...
formatEntryInfo Property Microsoft.PowerShell.Commands.Inter...
outOfBand Property bool outOfBand {get;set;}
writeStream Property Microsoft.PowerShell.Commands.Inter...
TypeName: Microsoft.PowerShell.Commands.Internal.Format.GroupEndData
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
ClassId2e4f51ef21dd47e99d3c952918aff9cd Property string ClassId2e4f51ef21dd47e99d3c9...
groupingEntry Property Microsoft.PowerShell.Commands.Inter...
TypeName: Microsoft.PowerShell.Commands.Internal.Format.FormatEndData
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
ClassId2e4f51ef21dd47e99d3c952918aff9cd Property string ClassId2e4f51ef21dd47e99d3c9...
groupingEntry Property Microsoft.PowerShell.Commands.Inter...
Apa artinya ini adalah perintah format tidak dapat disalurkan ke sebagian besar perintah lainnya. Mereka dapat disalurkan ke beberapa Out-*
perintah, tetapi itu saja. Inilah sebabnya mengapa Anda ingin melakukan pemformatan apa pun di bagian paling akhir baris (format kanan).
Alias
Alias di PowerShell adalah nama yang lebih pendek untuk perintah. PowerShell menyertakan sekumpulan alias bawaan dan Anda juga dapat menentukan alias Anda sendiri.
Get-Alias
Cmdlet digunakan untuk menemukan alias. Jika Anda sudah mengetahui alias untuk perintah, parameter Nama digunakan untuk menentukan perintah apa yang dikaitkan dengan alias.
Get-Alias -Name gcm
CommandType Name Version Source
----------- ---- ------- ------
Alias gcm -> Get-Command
Beberapa alias dapat ditentukan untuk nilai parameter Nama .
Get-Alias -Name gcm, gm
CommandType Name Version Source
----------- ---- ------- ------
Alias gcm -> Get-Command
Alias gm -> Get-Member
Anda akan sering melihat parameter Nama dihilangkan karena ini adalah parameter posisi.
Get-Alias gm
CommandType Name Version Source
----------- ---- ------- ------
Alias gm -> Get-Member
Jika Anda ingin menemukan alias untuk perintah, Anda harus menggunakan parameter Definisi .
Get-Alias -Definition Get-Command, Get-Member
CommandType Name Version Source
----------- ---- ------- ------
Alias gcm -> Get-Command
Alias gm -> Get-Member
Parameter Definisi tidak dapat digunakan secara posisional sehingga harus ditentukan.
Alias dapat menyimpan beberapa penekanan tombol dan tidak masalah saat Anda mengetik perintah ke konsol. Mereka tidak boleh digunakan dalam skrip atau kode apa pun yang Anda simpan atau bagikan dengan orang lain. Seperti disebutkan sebelumnya dalam buku ini, menggunakan cmdlet lengkap dan nama parameter adalah dokumentasi mandiri dan lebih mudah dipahami.
Berhati-hatilah saat membuat alias Anda sendiri karena hanya akan ada di sesi PowerShell Anda saat ini di komputer Anda.
Penyedia
Penyedia di PowerShell adalah antarmuka yang memungkinkan sistem file seperti akses ke datastore. Ada sejumlah penyedia bawaan di PowerShell.
Get-PSProvider
Name Capabilities Drives
---- ------------ ------
Registry ShouldProcess, Transactions {HKLM, HKCU}
Alias ShouldProcess {Alias}
Environment ShouldProcess {Env}
FileSystem Filter, ShouldProcess, Credentials {C, A, D}
Function ShouldProcess {Function}
Variable ShouldProcess {Variable}
Certificate ShouldProcess {Cert}
WSMan Credentials {WSMan}
Seperti yang Anda lihat di hasil sebelumnya, ada penyedia bawaan untuk registri, alias, variabel lingkungan, sistem file, fungsi, variabel, sertifikat, dan WSMan.
Drive aktual yang digunakan penyedia ini untuk mengekspos datastore mereka dapat ditentukan dengan Get-PSDrive
cmdlet. Get-PSDrive
Cmdlet tidak hanya menampilkan drive yang diekspos oleh penyedia, tetapi juga menampilkan drive logis Windows termasuk drive yang dipetakan ke berbagi jaringan.
Get-PSDrive
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
A FileSystem A:\
Alias Alias
C 14.41 112.10 FileSystem C:\
Cert Certificate \
D FileSystem D:\
Env Environment
Function Function
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
Variable Variable
WSMan WSMan
Modul pihak ketiga seperti modul PowerShell Direktori Aktif dan modul PowerShell SQLServer baik menambahkan penyedia PowerShell dan PSDrive mereka sendiri.
Impor modul Active Directory dan SQL Server PowerShell.
Import-Module -Name ActiveDirectory, SQLServer
Periksa untuk melihat apakah ada penyedia PowerShell tambahan yang ditambahkan.
Get-PSProvider
Name Capabilities Drives
---- ------------ ------
Registry ShouldProcess, Transactions {HKLM, HKCU}
Alias ShouldProcess {Alias}
Environment ShouldProcess {Env}
FileSystem Filter, ShouldProcess, Credentials {C, A, D}
Function ShouldProcess {Function}
Variable ShouldProcess {Variable}
ActiveDirectory Include, Exclude, Filter, Shoul... {AD}
SqlServer Credentials {SQLSERVER}
Perhatikan bahwa dalam kumpulan hasil sebelumnya, dua penyedia PowerShell baru sekarang ada, satu untuk Direktori Aktif dan satu lagi untuk SQL Server.
PSDrive untuk setiap modul tersebut juga ditambahkan.
Get-PSDrive
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
A FileSystem A:\
AD ActiveDire... //RootDSE/
Alias Alias
C 19.38 107.13 FileSystem C:\
Cert Certificate \
D FileSystem D:\
Env Environment
Function Function
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
SQLSERVER SqlServer SQLSERVER:\
Variable Variable
WSMan WSMan
PSDrives dapat diakses seperti sistem file tradisional.
Get-ChildItem -Path Cert:\LocalMachine\CA
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\CA
Thumbprint Subject
---------- -------
FEE449EE0E3965A5246F000E87FDE2A065FD89D4 CN=Root Agency
D559A586669B08F46A30A133F8A9ED3D038E2EA8 OU=www.verisign.com/CPS Incorporated LIABI...
109F1CAED645BB78B3EA2B94C0697C740733031C CN=Microsoft Windows Hardware Compatibility,...
Operator perbandingan
PowerShell berisi sejumlah operator perbandingan yang digunakan untuk membandingkan nilai atau menemukan nilai yang cocok dengan pola tertentu. Tabel 5-1 berisi daftar operator perbandingan di PowerShell.
Operator | Definisi |
---|---|
-eq |
Sama dengan |
-ne |
Tidak sama dengan |
-gt |
Lebih dari |
-ge |
Lebih dari atau sama dengan |
-lt |
Kurang dari |
-le |
Kurang dari atau sama dengan |
-Like |
Cocokkan * menggunakan karakter kartubebas |
-NotLike |
Tidak cocok dengan menggunakan * karakter kartubebas |
-Match |
Cocok dengan ekspresi reguler yang ditentukan |
-NotMatch |
Tidak cocok dengan ekspresi reguler yang ditentukan |
-Contains |
Menentukan apakah koleksi berisi nilai yang ditentukan |
-NotContains |
Menentukan apakah koleksi tidak berisi nilai tertentu |
-In |
Menentukan apakah nilai yang ditentukan ada dalam koleksi |
-NotIn |
Menentukan apakah nilai yang ditentukan tidak ada dalam koleksi |
-Replace |
Menggantikan nilai yang ditentukan |
Semua operator yang tercantum dalam Tabel 5-1 tidak peka huruf besar/kecil. Tempatkan di depan operator yang c
tercantum dalam Tabel 5-1 untuk membuatnya peka huruf besar/kecil. Misalnya, -ceq
adalah versi operator perbandingan -eq
yang peka huruf besar/kecil.
Huruf yang tepat "PowerShell" sama dengan huruf kecil "powershell" menggunakan operator perbandingan yang sama.
'PowerShell' -eq 'powershell'
True
Ini tidak sama dengan menggunakan versi peka huruf besar/kecil dari operator perbandingan yang sama.
'PowerShell' -ceq 'powershell'
False
Operator perbandingan yang tidak sama membalikkan kondisi.
'PowerShell' -ne 'powershell'
False
Lebih besar dari, lebih besar dari atau sama dengan, kurang dari, dan kurang dari atau sama semua bekerja dengan nilai string atau numerik.
5 -gt 5
False
Menggunakan lebih besar dari atau sama dengan alih-alih lebih besar dari dengan contoh sebelumnya mengembalikan true Boolean karena lima sama dengan lima.
5 -ge 5
True
Berdasarkan hasil dari dua contoh sebelumnya, Anda mungkin dapat menebak bagaimana kurang dari dan kurang dari atau sama dengan pekerjaan.
5 -lt 10
True
Operator -Like
dan -Match
dapat membingungkan, bahkan untuk pengguna PowerShell berpengalaman. -Like
digunakan dengan wildcard karakter *
dan ?
untuk melakukan kecocokan "like".
'PowerShell' -like '*shell'
True
-Match
menggunakan ekspresi reguler untuk melakukan pencocokan.
'PowerShell' -match '^*.shell$'
True
Gunakan operator rentang untuk menyimpan angka 1 hingga 10 dalam variabel.
$Numbers = 1..10
Tentukan $Numbers
apakah variabel menyertakan 15.
$Numbers -contains 15
False
Tentukan apakah menyertakan angka 10.
$Numbers -contains 10
True
-NotContains
membalikkan logika untuk melihat apakah $Numbers
variabel tidak berisi nilai.
$Numbers -notcontains 15
True
Contoh sebelumnya mengembalikan true Boolean karena benar bahwa $Numbers
variabel tidak berisi 15. Namun ini berisi angka 10 sehingga salah ketika diuji.
$Numbers -notcontains 10
False
Operator perbandingan "in" pertama kali diperkenalkan di PowerShell versi 3.0. Ini digunakan untuk menentukan apakah nilai adalah "dalam" array. Variabel $Numbers
adalah array karena berisi beberapa nilai.
15 -in $Numbers
False
Dengan kata lain, -in
melakukan pengujian yang sama dengan operator berisi perbandingan kecuali dari arah yang berlawanan.
10 -in $Numbers
True
15 tidak ada dalam $Numbers
array sehingga false dikembalikan dalam contoh berikut.
15 -in $Numbers
False
Sama seperti -contains
operator, not
membalikkan logika untuk -in
operator.
10 -notin $Numbers
False
Contoh sebelumnya mengembalikan false karena $Numbers
array menyertakan 10 dan kondisi sedang diuji untuk menentukan apakah tidak berisi 10.
15 "tidak masuk" $Numbers
array sehingga mengembalikan true Boolean .
15 -notin $Numbers
True
Operator -replace
hanya ingin kau berpikir. Ini digunakan untuk menggantikan sesuatu. Menentukan satu nilai menggantikan nilai tersebut tanpa apa-apa. Dalam contoh berikut, saya mengganti "Shell" tanpa apa-apa.
'PowerShell' -replace 'Shell'
Power
Jika Anda ingin mengganti nilai dengan nilai yang berbeda, tentukan nilai baru setelah pola yang ingin Anda ganti. SQL Saturday di Baton Rouge adalah acara yang saya coba bicarakan setiap tahun. Dalam contoh berikut, saya mengganti kata "Sabtu" dengan singkatan "Sat".
'SQL Saturday - Baton Rouge' -Replace 'saturday','Sat'
SQL Sat - Baton Rouge
Ada juga metode seperti Replace() yang dapat digunakan untuk mengganti hal-hal yang mirip dengan cara kerja operator replace. Namun, -Replace
operator tidak peka huruf besar/kecil secara default, dan metode Replace() peka huruf besar/kecil.
'SQL Saturday - Baton Rouge'.Replace('saturday','Sat')
SQL Saturday - Baton Rouge
Perhatikan bahwa kata "Sabtu" tidak diganti dalam contoh sebelumnya. Ini karena ditentukan dalam kasus yang berbeda dari yang asli. Ketika kata "Sabtu" ditentukan dalam kasus yang sama dengan aslinya, metode Replace() memang menggantinya seperti yang diharapkan.
'SQL Saturday - Baton Rouge'.Replace('Saturday','Sat')
SQL Sat - Baton Rouge
Berhati-hatilah saat menggunakan metode untuk mengubah data karena Anda dapat mengalami masalah yang tidak terduga, seperti gagal tes Turki. Misalnya, lihat artikel blog berjudul Menggunakan Pester untuk Menguji Kode PowerShell dengan Budaya Lain. Rekomendasi saya adalah menggunakan operator alih-alih metode jika memungkinkan untuk menghindari jenis masalah ini.
Meskipun operator perbandingan dapat digunakan seperti yang ditunjukkan pada contoh sebelumnya, saya biasanya menemukan diri saya menggunakannya dengan Where-Object
cmdlet untuk melakukan beberapa jenis pemfilteran.
Ringkasan
Dalam bab ini, Anda telah mempelajari sejumlah topik berbeda untuk menyertakan Hak Pemformatan, Alias, Penyedia, dan Operator Perbandingan.
Tinjauan
- Mengapa perlu melakukan Pemformatan sejauh mungkin ke kanan?
- Bagaimana Anda menentukan apa cmdlet aktual untuk
%
alias? - Mengapa Anda tidak boleh menggunakan alias dalam skrip yang Anda simpan atau kode yang Anda bagikan dengan orang lain?
- Lakukan daftar direktori pada drive yang terkait dengan salah satu penyedia registri.
- Apa salah satu manfaat utama menggunakan operator pengganti alih-alih metode ganti?
Bacaan yang Disarankan
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