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.
Prasyarat
Modul SqlServer PowerShell diperlukan oleh beberapa contoh yang ditunjukkan dalam bab ini. Untuk informasi selengkapnya tentang modul SqlServer PowerShell dan instruksi penginstalan, lihat gambaran umum SQL Server PowerShell. Ini juga digunakan dalam bab berikutnya. Unduh dan instal di komputer lingkungan lab Windows Anda.
Format Rata Kanan
Di Bab 4, Anda belajar memfilter sejauh mungkin ke kiri. Aturan untuk memformat output perintah secara manual mirip dengan aturan tersebut, kecuali harus dilakukan sebisa mungkin ke arah 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 akan berubah ke daftar kecuali jika pemformatan kustom digunakan.
Get-Service -Name w32time |
Select-Object -Property Status, DisplayName, Can*
Status : Running
DisplayName : Windows Time
CanPauseAndContinue : False
CanShutdown : True
CanStop : True
Gunakan cmdlet Format-Table
untuk mengesampingkan pemformatan secara manual dan memperlihatkan output dalam tabel, bukan 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
Gunakan cmdlet Format-List
untuk mengambil alih pemformatan default dan mengembalikan hasilnya dalam daftar.
Get-Service -Name w32time | Format-List
Perhatikan bahwa dengan menyalurkan Get-Service
ke Format-List
memberikan properti tambahan. Ini tidak terjadi pada setiap perintah karena format untuk perintah tertentu sudah diatur di balik layar.
Name : w32time
DisplayName : Windows Time
Status : Running
DependentServices : {}
ServicesDependedOn : {}
CanPauseAndContinue : False
CanShutdown : True
CanStop : True
ServiceType : Win32OwnProcess, Win32ShareProcess
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.Obj...
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
autosizeInfo Property Microsoft.PowerShell.C...
ClassId2e4f51ef21dd47e99d3c952918aff9cd Property string ClassId2e4f51ef...
groupingEntry Property Microsoft.PowerShell.C...
pageFooterEntry Property Microsoft.PowerShell.C...
pageHeaderEntry Property Microsoft.PowerShell.C...
shapeInfo Property Microsoft.PowerShell.C...
TypeName: Microsoft.PowerShell.Commands.Internal.Format.GroupStartData
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Obj...
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
ClassId2e4f51ef21dd47e99d3c952918aff9cd Property string ClassId2e4f51ef...
groupingEntry Property Microsoft.PowerShell.C...
shapeInfo Property Microsoft.PowerShell.C...
TypeName: Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Obj...
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
ClassId2e4f51ef21dd47e99d3c952918aff9cd Property string ClassId2e4f51ef...
formatEntryInfo Property Microsoft.PowerShell.C...
outOfBand Property bool outOfBand {get;set;}
writeStream Property Microsoft.PowerShell.C...
TypeName: Microsoft.PowerShell.Commands.Internal.Format.GroupEndData
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Obj...
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
ClassId2e4f51ef21dd47e99d3c952918aff9cd Property string ClassId2e4f51ef...
groupingEntry Property Microsoft.PowerShell.C...
TypeName: Microsoft.PowerShell.Commands.Internal.Format.FormatEndData
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Obj...
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
ClassId2e4f51ef21dd47e99d3c952918aff9cd Property string ClassId2e4f51ef...
groupingEntry Property Microsoft.PowerShell.C...
Apa artinya ini adalah perintah format tidak dapat disalurkan ke sebagian besar perintah lainnya. Mereka dapat disalurkan ke beberapa perintah Out-*
, namun hanya sebatas itu. Inilah sebabnya mengapa Anda ingin melakukan pemformatan apa pun di bagian paling akhir baris (format kanan).
Nama Lain
Alias di PowerShell adalah nama yang lebih pendek untuk perintah. PowerShell menyertakan sekumpulan alias bawaan dan Anda juga dapat menentukan alias Anda sendiri.
Cmdlet Get-Alias
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
----------- ---- -------
Alias gcm -> Get-Command
Beberapa alias dapat ditentukan untuk nilai parameter Nama.
Get-Alias -Name gcm, gm
CommandType Name Version
----------- ---- -------
Alias gcm -> Get-Command
Alias gm -> Get-Member
Anda sering melihat parameter Nama dihilangkan karena ini adalah parameter posisi.
Get-Alias gm
CommandType Name Version
----------- ---- -------
Alias gm -> Get-Member
Jika Anda ingin menemukan alias untuk perintah, Anda perlu menggunakan parameter Definisi.
Get-Alias -Definition Get-Command, Get-Member
CommandType Name Version
----------- ---- -------
Alias gcm -> Get-Command
Alias gm -> Get-Member
Parameter Definisi tidak dapat digunakan secara posisional, sehingga harus disebutkan secara eksplisit.
Alias dapat menghemat 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 ada di sesi PowerShell Anda saat ini di komputer Anda.
Penyedia
Penyedia di PowerShell adalah antarmuka yang memungkinkan akses seperti sistem file ke penyimpanan data. Ada beberapa penyedia bawaan di PowerShell.
Get-PSProvider
Seperti yang Anda lihat dalam hasil berikut, ada penyedia bawaan untuk registri, alias, variabel lingkungan, sistem file, fungsi, variabel, sertifikat, dan WSMan.
Name Capabilities Drives
---- ------------ ------
Registry ShouldProcess, Transactions {HKLM, HKCU}
Alias ShouldProcess {Alias}
Environment ShouldProcess {Env}
FileSystem Filter, ShouldProcess, Cr... {C, D}
Function ShouldProcess {Function}
Variable ShouldProcess {Variable}
Drive aktual yang digunakan penyedia ini untuk mengekspos penyimpanan data mereka dapat ditentukan dengan cmdlet Get-PSDrive
. cmdlet Get-PSDrive
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
---- --------- --------- -------- ----
Alias Alias
C 18.56 107.62 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 ActiveDirectory dan modul PowerShell SqlServer masing-masing menambahkan penyedia PowerShell dan PSDrive mereka sendiri.
Impor modul PowerShell ActiveDirectory dan SqlServer.
Import-Module -Name ActiveDirectory, SQLServer
Periksa untuk melihat apakah ada penyedia PowerShell tambahan yang ditambahkan.
Get-PSProvider
Perhatikan bahwa dalam serangkaian hasil berikut, dua penyedia PowerShell baru sekarang ada, satu untuk Direktori Aktif dan satu lagi untuk SQL Server.
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}
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 Incorp....
109F1CAED645BB78B3EA2B94C0697C740733031C CN=Microsoft Windows Hardware C...
Operator Perbandingan
PowerShell berisi berbagai operator perbandingan yang digunakan untuk membandingkan nilai atau menemukan nilai yang cocok dengan pola tertentu. Tabel berikut ini berisi daftar operator perbandingan di PowerShell.
Semua operator yang tercantum dalam tabel tidak peka terhadap besar kecilnya huruf. Untuk membuatnya sensitif terhadap huruf besar dan kecil, tempatkan c
di depan operator. Misalnya, -ceq
adalah versi pembeda huruf besar/kecil dari operator perbandingan sama dengan (-eq
).
Pengelola | Definisi |
---|---|
-eq |
Sama dengan |
-ne |
Tidak sama dengan |
-gt |
Lebih besar dari |
-ge |
Lebih besar dari atau sama dengan |
-lt |
Kurang dari |
-le |
Kurang dari atau sama dengan |
-like |
Sesuaikan menggunakan karakter wildcard * |
-notlike |
Tidak sesuai menggunakan karakter kartu-bebas * . |
-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 |
Huruf yang tepat "PowerShell" sama dengan huruf kecil "powershell" menggunakan operator perbandingan yang sama.
'PowerShell' -eq 'powershell'
True
Tidak sama jika menggunakan versi peka huruf besar/kecil dari operator perbandingan 'equals'.
'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 dengan semuanya bekerja dengan nilai string atau numerik.
5 -gt 5
False
Menggunakan lebih besar dari atau sama dengan alih-alih lebih besar dari pada contoh sebelumnya mengembalikan Boolean benar karena lima sama dengan lima.
5 -ge 5
True
Berdasarkan hasil dari dua contoh sebelumnya, Anda mungkin dapat menebak cara kerja dari "kurang dari" dan "kurang dari atau sama dengan".
5 -lt 10
True
Operator -like
dan -match
dapat membingungkan, bahkan untuk pengguna PowerShell yang berpengalaman.
-like
digunakan dengan karakter wildcard *
dan ?
untuk melakukan pencocokan pola "like".
'PowerShell' -like '*shell'
True
Operator -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 apakah variabel $Numbers
menyertakan 15.
$Numbers -contains 15
False
Tentukan apakah menyertakan angka 10.
$Numbers -contains 10
True
Operator -notcontains
membalikkan logika untuk melihat apakah variabel $Numbers
tidak berisi nilai.
$Numbers -notcontains 15
Contoh sebelumnya mengembalikan Boolean true karena benar bahwa variabel $Numbers
tidak berisi 15.
True
Namun, ini berisi angka 10, sehingga salah saat diuji.
$Numbers -notcontains 10
False
Operator perbandingan -in
pertama kali diperkenalkan di PowerShell versi 3.0. Ini digunakan untuk menentukan apakah nilai ada di 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 tetapi dari arah sebaliknya.
10 -in $Numbers
True
Lima belas tidak berada dalam array $Numbers
, jadi false dikembalikan dalam contoh berikut.
15 -in $Numbers
False
Sama seperti operator -contains
, not
membalikkan logika untuk operator -in
.
10 -notin $Numbers
Contoh sebelumnya mengembalikan nilai false karena array $Numbers
menyertakan 10 dan kondisi menguji apakah tidak berisi 10.
False
Tentukan apakah lima belas tidak ada dalam array $Numbers
.
15 -notin $Numbers
15 "tidak terdapat" dalam array $Numbers
sehingga mengembalikan Boolean true.
True
Operator -replace
hanya ingin Anda berpikir. Ini digunakan untuk menggantikan sesuatu. Menentukan satu nilai menggantikan nilai tersebut dengan kosong. Dalam contoh berikut, Anda mengganti "Shell" dengan kosong.
'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, kata "Sabtu" diganti 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 pengganti. Namun, operator -replace
tidak memperhatikan perbedaan huruf besar/kecil secara default, sedangkan metode Replace() memperhatikan perbedaan huruf besar/kecil.
'SQL Saturday - Baton Rouge'.Replace('saturday','Sat')
Perhatikan bahwa kata "Sabtu" tidak diganti. Ini karena dinyatakan dalam kasus yang berbeda dari yang asli.
SQL Saturday - Baton Rouge
Ketika kata "Sabtu" ditentukan dalam kasus yang sama dengan aslinya, metode Replace() melakukan penggantian 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 Turkey Test. Misalnya, lihat artikel blog saya, Menggunakan Pester untuk Menguji Kode PowerShell dengan Budaya Lain. Saya sarankan 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 menggunakannya dengan cmdlet Where-Object
untuk melakukan pemfilteran.
Ringkasan
Anda mempelajari beberapa topik dalam bab ini, termasuk Memformat dengan Benar, Alias, Penyedia, dan Operator Perbandingan.
Tinjauan
- Mengapa perlu melakukan pemformatan sejauh mungkin ke kanan?
- Bagaimana Anda menentukan cmdlet yang sebenarnya 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 penyedia Registri.
- Apa salah satu manfaat utama menggunakan operator pengganti alih-alih metode ganti?
Referensi
- Format-Tabel
- Format-Daftar
- Format Lebar
- tentang_Alias
- tentang_Penyedia
- tentang_Operator_Pembandingan
- tentang_Arrays
Langkah berikutnya
Di bab berikutnya, Anda akan mempelajari tentang kontrol alur, pembuatan skrip, perulangan, dan logika kondisional.