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.
PowerShell adalah bahasa skrip berorientasi objek. Ini mewakili data dan status sistem menggunakan objek terstruktur yang berasal dari kelas .NET yang ditentukan dalam .NET Framework. Dengan memanfaatkan .NET Framework, PowerShell menawarkan akses ke berbagai kemampuan sistem, termasuk kelas sistem file, registri, dan Instrumentasi Manajemen Windows (WMI). PowerShell juga memiliki akses ke pustaka kelas .NET Framework, yang berisi banyak koleksi kelas yang dapat Anda gunakan untuk mengembangkan skrip PowerShell yang kuat.
Di PowerShell, setiap item atau status adalah instans objek yang dapat dijelajahi dan dimanipulasi.
Get-Member Cmdlet adalah salah satu alat utama yang disediakan oleh PowerShell untuk penemuan objek, yang mengungkapkan karakteristik objek. Bab ini mengeksplorasi bagaimana PowerShell memanfaatkan objek dan bagaimana Anda dapat menemukan dan memanipulasi objek ini untuk merampingkan skrip Anda dan mengelola sistem Anda dengan lebih efisien.
Prasyarat
Untuk mengikuti contoh spesifik dalam bab ini, pastikan komputer lingkungan lab Anda adalah bagian dari domain Direktori Aktif lingkungan lab Anda. Anda juga harus menginstal modul PowerShell Direktori Aktif yang dibundel dengan Windows Remote Server Administration Tools (RSAT). Jika Anda menggunakan Windows 10 build 1809 atau yang lebih baru, termasuk Windows 11, Anda dapat menginstal RSAT sebagai fitur Windows.
Catatan
Direktori Aktif tidak didukung untuk edisi Windows Home.
- Untuk informasi tentang menginstal RSAT, lihat modul Manajemen Windows.
- Untuk versi Windows yang lebih lama, lihat RSAT untuk Windows.
Get-Member
Get-Member memberikan wawasan tentang objek, properti, dan metode yang terkait dengan perintah PowerShell. Anda dapat menyalurkan perintah PowerShell apa pun yang menghasilkan output berbasis objek ke Get-Member.
Ketika Anda menyalurkan output perintah ke Get-Member, itu mengungkapkan struktur objek yang dikembalikan oleh perintah, merinci properti dan metodenya.
- Properti: Atribut objek.
- Metode: Tindakan yang dapat Anda lakukan pada objek.
Untuk menggambarkan konsep ini, pertimbangkan SIM sebagai analogi. Seperti objek apa pun, SIM memiliki properti, seperti warna mata, yang biasanya mencakup blue nilai dan brown .
Sebaliknya, metode mewakili tindakan yang dapat Anda lakukan pada objek. Misalnya, Revoke adalah metode yang dapat dilakukan Departemen Kendaraan Bermotor pada SIM.
Properti
Untuk mengambil detail tentang layanan Waktu Windows pada sistem Anda menggunakan PowerShell, gunakan Get-Service cmdlet .
Get-Service -Name w32time
Hasilnya mencakup properti Status, Nama, dan DisplayName . Properti Status menunjukkan bahwa layanan tersebut adalah Running. Nilai untuk properti Nama adalah w32time, dan nilai untuk properti DisplayName adalah Windows Time.
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time
Untuk mencantumkan semua properti dan metode yang tersedia untuk Get-Service, pipakan ke Get-Member.
Get-Service -Name w32time | Get-Member
Hasilnya menunjukkan baris pertama berisi satu bagian informasi penting. TypeName mengidentifikasi jenis objek yang dikembalikan, yang dalam contoh ini adalah objek System.ServiceProcess.ServiceController . Nama ini sering disingkat ke bagian terakhir dari TypeName, seperti ServiceController, dalam contoh ini.
TypeName: System.ServiceProcess.ServiceController
Name MemberType Definition
---- ---------- ----------
Name AliasProperty Name = ServiceName
RequiredServices AliasProperty RequiredServices = ServicesDepend...
Disposed Event System.EventHandler Disposed(Syst...
Close Method void Close()
Continue Method void Continue()
CreateObjRef Method System.Runtime.Remoting.ObjRef Cr...
Dispose Method void Dispose(), void IDisposable....
Equals Method bool Equals(System.Object obj)
ExecuteCommand Method void ExecuteCommand(int command)
GetHashCode Method int GetHashCode()
GetLifetimeService Method System.Object GetLifetimeService()
GetType Method type GetType()
InitializeLifetimeService Method System.Object InitializeLifetimeS...
Pause Method void Pause()
Refresh Method void Refresh()
Start Method void Start(), void Start(string[]...
Stop Method void Stop()
WaitForStatus Method void WaitForStatus(System.Service...
CanPauseAndContinue Property bool CanPauseAndContinue {get;}
CanShutdown Property bool CanShutdown {get;}
CanStop Property bool CanStop {get;}
Container Property System.ComponentModel.IContainer ...
DependentServices Property System.ServiceProcess.ServiceCont...
DisplayName Property string DisplayName {get;set;}
MachineName Property string MachineName {get;set;}
ServiceHandle Property System.Runtime.InteropServices.Sa...
ServiceName Property string ServiceName {get;set;}
ServicesDependedOn Property System.ServiceProcess.ServiceCont...
ServiceType Property System.ServiceProcess.ServiceType...
Site Property System.ComponentModel.ISite Site ...
StartType Property System.ServiceProcess.ServiceStar...
Status Property System.ServiceProcess.ServiceCont...
ToString ScriptMethod System.Object ToString();
Perhatikan ketika Anda menyalurkan Get-Service ke Get-Member, ada lebih banyak properti daripada yang ditampilkan secara default. Meskipun properti tambahan ini tidak ditampilkan secara default, Anda dapat memilihnya dengan mempipa dan Select-Object menggunakan parameter Properti . Contoh berikut memilih semua properti dengan mempipa hasil ke Get-ServiceSelect-Object dan menentukan * karakter kartubebas sebagai nilai untuk parameter Properti .
Get-Service -Name w32time | Select-Object -Property *
Secara default, PowerShell mengembalikan empat properti sebagai tabel dan lima atau lebih sebagai daftar. Namun, beberapa perintah menerapkan pemformatan kustom untuk mengambil alih jumlah properti default yang ditampilkan dalam tabel.
Anda dapat menggunakan Format-Table dan Format-List untuk mengambil alih default ini secara manual.
Name : w32time
RequiredServices : {}
CanPauseAndContinue : False
CanShutdown : True
CanStop : True
DisplayName : Windows Time
DependentServices : {}
MachineName : .
ServiceName : w32time
ServicesDependedOn : {}
ServiceHandle :
Status : Running
ServiceType : Win32OwnProcess, Win32ShareProcess
StartType : Manual
Site :
Container :
Properti tertentu juga dapat dipilih menggunakan daftar yang dipisahkan koma sebagai nilai parameter Properti .
Get-Service -Name w32time |
Select-Object -Property Status, Name, DisplayName, ServiceType
Status Name DisplayName ServiceType
------ ---- ----------- -----------
Running w32time Windows Time Win32OwnProcess, Win32ShareProcess
Anda dapat menggunakan karakter kartubebas saat menentukan nama properti dengan Select-Object.
Dalam contoh berikut, gunakan Can* sebagai salah satu nilai untuk parameter Properti untuk mengembalikan semua properti yang dimulai dengan Can. Ini termasuk CanPauseAndContinue, CanShutdown, dan CanStop.
Get-Service -Name w32time |
Select-Object -Property Status, DisplayName, Can*
Perhatikan bahwa ada lebih banyak properti yang tercantum daripada yang ditampilkan secara default.
Status : Running
DisplayName : Windows Time
CanPauseAndContinue : False
CanShutdown : True
CanStop : True
Metode
Metode adalah tindakan yang dapat Anda lakukan pada objek.
Gunakan parameter MemberType untuk mempersempit hasil Get-Member untuk menampilkan hanya metode untuk Get-Service.
Get-Service -Name w32time | Get-Member -MemberType Method
Seperti yang Anda lihat, ada beberapa metode.
TypeName: System.ServiceProcess.ServiceController
Name MemberType Definition
---- ---------- ----------
Close Method void Close()
Continue Method void Continue()
CreateObjRef Method System.Runtime.Remoting.ObjRef Creat...
Dispose Method void Dispose(), void IDisposable.Dis...
Equals Method bool Equals(System.Object obj)
ExecuteCommand Method void ExecuteCommand(int command)
GetHashCode Method int GetHashCode()
GetLifetimeService Method System.Object GetLifetimeService()
GetType Method type GetType()
InitializeLifetimeService Method System.Object InitializeLifetimeServ...
Pause Method void Pause()
Refresh Method void Refresh()
Start Method void Start(), void Start(string[] args)
Stop Method void Stop()
WaitForStatus Method void WaitForStatus(System.ServicePro...
Anda dapat menggunakan metode Hentikan untuk menghentikan layanan Windows. Anda harus menjalankan perintah ini dari sesi PowerShell yang ditingkatkan.
(Get-Service -Name w32time).Stop()
Kueri status layanan Windows Time untuk mengonfirmasi bahwa layanan dihentikan.
Get-Service -Name w32time
Status Name DisplayName
------ ---- -----------
Stopped w32time Windows Time
Anda mungkin menggunakan metode dengan hemat, tetapi Anda harus menyadarinya. Terkadang, Anda menemukan Get-* perintah tanpa perintah yang Set-* sesuai. Seringkali, Anda dapat menemukan metode untuk melakukan Set-* tindakan dalam skenario ini.
Get-SqlAgentJob Cmdlet dalam modul SqlServer PowerShell adalah contoh yang sangat baik. Tidak ada cmdlet yang Set-* sesuai, tetapi Anda dapat menggunakan metode untuk menyelesaikan tugas yang sama. Untuk informasi selengkapnya tentang modul SqlServer PowerShell dan instruksi penginstalan, lihat gambaran umum PowerShell SQL Server.
Alasan lain untuk mengetahui metode adalah beberapa pengguna PowerShell menganggap Anda tidak dapat membuat perubahan merusak dengan Get-* perintah, tetapi mereka benar-benar dapat menyebabkan masalah parah jika disalahgunakan.
Opsi yang lebih baik adalah menggunakan cmdlet khusus jika ada untuk melakukan tindakan. Misalnya, gunakan Start-Service cmdlet untuk memulai layanan Windows Time.
Secara default, Start-Service, seperti metode Mulai , Get-Servicetidak mengembalikan hasil apa pun.
Namun, salah satu manfaat menggunakan cmdlet adalah sering memberikan kemampuan tambahan yang tidak tersedia dengan metode .
Dalam contoh berikut, gunakan parameter PassThru , yang menyebabkan cmdlet yang biasanya tidak menghasilkan output untuk menghasilkan output.
Karena PowerShell tidak berpartisipasi dalam Kontrol Akses Pengguna (UAC), Anda harus menjalankan perintah yang memerlukan elevasi, seperti Start-Service, dari sesi PowerShell yang ditingkatkan.
Get-Service -Name w32time | Start-Service -PassThru
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time
Catatan
Saat bekerja dengan cmdlet PowerShell, penting untuk menghindari pembuatan asumsi tentang outputnya.
Untuk mengambil informasi tentang proses PowerShell yang berjalan di komputer lingkungan lab Anda, gunakan Get-Process cmdlet .
Get-Process -Name powershell
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
710 31 55692 70580 0.72 9436 2 powershell
Untuk menentukan properti yang tersedia, pipa Get-Process ke Get-Member.
Get-Process -Name powershell | Get-Member
Saat menggunakan Get-Process perintah , Anda mungkin melihat bahwa beberapa properti yang ditampilkan secara default hilang saat Anda melihat hasil .Get-Member Perilaku ini karena beberapa nilai yang ditampilkan secara default, seperti NPM(K), , PM(K)WS(K), dan CPU(s), adalah properti terhitung. Anda harus menyalurkan perintah untuk Get-Member menentukan nama properti aktualnya.
TypeName: System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
Handles AliasProperty Handles = Handlecount
Name AliasProperty Name = ProcessName
NPM AliasProperty NPM = NonpagedSystemMemorySize64
PM AliasProperty PM = PagedMemorySize64
SI AliasProperty SI = SessionId
VM AliasProperty VM = VirtualMemorySize64
WS AliasProperty WS = WorkingSet64
Disposed Event System.EventHandler Disposed(Sy...
ErrorDataReceived Event System.Diagnostics.DataReceived...
Exited Event System.EventHandler Exited(Syst...
OutputDataReceived Event System.Diagnostics.DataReceived...
BeginErrorReadLine Method void BeginErrorReadLine()
BeginOutputReadLine Method void BeginOutputReadLine()
CancelErrorRead Method void CancelErrorRead()
CancelOutputRead Method void CancelOutputRead()
Close Method void Close()
CloseMainWindow Method bool CloseMainWindow()
CreateObjRef Method System.Runtime.Remoting.ObjRef ...
Dispose Method void Dispose(), void IDisposabl...
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetLifetimeService Method System.Object GetLifetimeService()
GetType Method type GetType()
InitializeLifetimeService Method System.Object InitializeLifetim...
Kill Method void Kill()
Refresh Method void Refresh()
Start Method bool Start()
ToString Method string ToString()
WaitForExit Method bool WaitForExit(int millisecon...
WaitForInputIdle Method bool WaitForInputIdle(int milli...
__NounName NoteProperty string __NounName=Process
BasePriority Property int BasePriority {get;}
Container Property System.ComponentModel.IContaine...
EnableRaisingEvents Property bool EnableRaisingEvents {get;s...
ExitCode Property int ExitCode {get;}
ExitTime Property datetime ExitTime {get;}
Handle Property System.IntPtr Handle {get;}
HandleCount Property int HandleCount {get;}
HasExited Property bool HasExited {get;}
Id Property int Id {get;}
MachineName Property string MachineName {get;}
MainModule Property System.Diagnostics.ProcessModul...
MainWindowHandle Property System.IntPtr MainWindowHandle ...
MainWindowTitle Property string MainWindowTitle {get;}
MaxWorkingSet Property System.IntPtr MaxWorkingSet {ge...
MinWorkingSet Property System.IntPtr MinWorkingSet {ge...
Modules Property System.Diagnostics.ProcessModul...
NonpagedSystemMemorySize Property int NonpagedSystemMemorySize {g...
NonpagedSystemMemorySize64 Property long NonpagedSystemMemorySize64...
PagedMemorySize Property int PagedMemorySize {get;}
PagedMemorySize64 Property long PagedMemorySize64 {get;}
PagedSystemMemorySize Property int PagedSystemMemorySize {get;}
PagedSystemMemorySize64 Property long PagedSystemMemorySize64 {g...
PeakPagedMemorySize Property int PeakPagedMemorySize {get;}
PeakPagedMemorySize64 Property long PeakPagedMemorySize64 {get;}
PeakVirtualMemorySize Property int PeakVirtualMemorySize {get;}
PeakVirtualMemorySize64 Property long PeakVirtualMemorySize64 {g...
PeakWorkingSet Property int PeakWorkingSet {get;}
PeakWorkingSet64 Property long PeakWorkingSet64 {get;}
PriorityBoostEnabled Property bool PriorityBoostEnabled {get;...
PriorityClass Property System.Diagnostics.ProcessPrior...
PrivateMemorySize Property int PrivateMemorySize {get;}
PrivateMemorySize64 Property long PrivateMemorySize64 {get;}
PrivilegedProcessorTime Property timespan PrivilegedProcessorTim...
ProcessName Property string ProcessName {get;}
ProcessorAffinity Property System.IntPtr ProcessorAffinity...
Responding Property bool Responding {get;}
SafeHandle Property Microsoft.Win32.SafeHandles.Saf...
SessionId Property int SessionId {get;}
Site Property System.ComponentModel.ISite Sit...
StandardError Property System.IO.StreamReader Standard...
StandardInput Property System.IO.StreamWriter Standard...
StandardOutput Property System.IO.StreamReader Standard...
StartInfo Property System.Diagnostics.ProcessStart...
StartTime Property datetime StartTime {get;}
SynchronizingObject Property System.ComponentModel.ISynchron...
Threads Property System.Diagnostics.ProcessThrea...
TotalProcessorTime Property timespan TotalProcessorTime {get;}
UserProcessorTime Property timespan UserProcessorTime {get;}
VirtualMemorySize Property int VirtualMemorySize {get;}
VirtualMemorySize64 Property long VirtualMemorySize64 {get;}
WorkingSet Property int WorkingSet {get;}
WorkingSet64 Property long WorkingSet64 {get;}
PSConfiguration PropertySet PSConfiguration {Name, Id, Prio...
PSResources PropertySet PSResources {Name, Id, Handleco...
Company ScriptProperty System.Object Company {get=$thi...
CPU ScriptProperty System.Object CPU {get=$this.To...
Description ScriptProperty System.Object Description {get=...
FileVersion ScriptProperty System.Object FileVersion {get=...
Path ScriptProperty System.Object Path {get=$this.M...
Product ScriptProperty System.Object Product {get=$thi...
ProductVersion ScriptProperty System.Object ProductVersion {g...
Anda tidak dapat menyalurkan perintah ke Get-Member yang tidak menghasilkan output. Karena Start-Service tidak menghasilkan output secara default, mencoba menyalurkannya untuk Get-Member menghasilkan kesalahan.
Start-Service -Name w32time | Get-Member
Catatan
Untuk disalurkan ke Get-Member, perintah harus menghasilkan output berbasis objek.
Get-Member : You must specify an object for the Get-Member cmdlet.
At line:1 char:31
+ Start-Service -Name w32time | Get-Member
+ ~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Get-Member], InvalidOperation
Exception
+ FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Comma
nds.GetMemberCommand
Untuk menghindari kesalahan ini, tentukan parameter PassThru dengan Start-Service. Seperti yang disebutkan sebelumnya, menambahkan parameter PassThru menyebabkan cmdlet yang biasanya tidak menghasilkan output untuk menghasilkan output.
Start-Service -Name w32time -PassThru | Get-Member
TypeName: System.ServiceProcess.ServiceController
Name MemberType Definition
---- ---------- ----------
Name AliasProperty Name = ServiceName
RequiredServices AliasProperty RequiredServices = ServicesDepend...
Disposed Event System.EventHandler Disposed(Syst...
Close Method void Close()
Continue Method void Continue()
CreateObjRef Method System.Runtime.Remoting.ObjRef Cr...
Dispose Method void Dispose(), void IDisposable....
Equals Method bool Equals(System.Object obj)
ExecuteCommand Method void ExecuteCommand(int command)
GetHashCode Method int GetHashCode()
GetLifetimeService Method System.Object GetLifetimeService()
GetType Method type GetType()
InitializeLifetimeService Method System.Object InitializeLifetimeS...
Pause Method void Pause()
Refresh Method void Refresh()
Start Method void Start(), void Start(string[]...
Stop Method void Stop()
WaitForStatus Method void WaitForStatus(System.Service...
CanPauseAndContinue Property bool CanPauseAndContinue {get;}
CanShutdown Property bool CanShutdown {get;}
CanStop Property bool CanStop {get;}
Container Property System.ComponentModel.IContainer ...
DependentServices Property System.ServiceProcess.ServiceCont...
DisplayName Property string DisplayName {get;set;}
MachineName Property string MachineName {get;set;}
ServiceHandle Property System.Runtime.InteropServices.Sa...
ServiceName Property string ServiceName {get;set;}
ServicesDependedOn Property System.ServiceProcess.ServiceCont...
ServiceType Property System.ServiceProcess.ServiceType...
Site Property System.ComponentModel.ISite Site ...
StartType Property System.ServiceProcess.ServiceStar...
Status Property System.ServiceProcess.ServiceCont...
ToString ScriptMethod System.Object ToString();
Out-Host dirancang untuk menampilkan output langsung di host PowerShell dan tidak menghasilkan output berbasis objek. Akibatnya, Anda tidak dapat menyalurkan outputnya ke Get-Member, yang memerlukan input berbasis objek.
Get-Service -Name w32time | Out-Host | Get-Member
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time
Get-Member : You must specify an object for the Get-Member cmdlet.
At line:1 char:40
+ Get-Service -Name w32time | Out-Host | Get-Member
+ ~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Get-Member], InvalidOperation
Exception
+ FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Comma
nds.GetMemberCommand
Get-Command
Mengetahui jenis objek yang dihasilkan perintah memungkinkan Anda mencari perintah yang menerima jenis objek tersebut sebagai input.
Get-Command -ParameterType ServiceController
Perintah berikut menerima objek ServiceController melalui input alur atau parameter.
CommandType Name Version
----------- ---- -------
Cmdlet Get-Service 3.1.0.0
Cmdlet Restart-Service 3.1.0.0
Cmdlet Resume-Service 3.1.0.0
Cmdlet Set-Service 3.1.0.0
Cmdlet Start-Service 3.1.0.0
Cmdlet Stop-Service 3.1.0.0
Cmdlet Suspend-Service 3.1.0.0
Direktori Aktif
Catatan
Seperti disebutkan dalam prasyarat bab, pastikan Anda telah menginstal RSAT untuk bagian ini. Selain itu, komputer lingkungan lab Anda harus menjadi anggota domain Direktori Aktif lingkungan lab Anda.
Untuk mengidentifikasi perintah yang ditambahkan ke modul ActiveDirectory PowerShell setelah Anda menginstal RSAT, gunakan Get-Command dikombinasikan dengan parameter Modul . Contoh berikut mencantumkan semua perintah yang tersedia dalam modul ActiveDirectory .
Get-Command -Module ActiveDirectory
Modul PowerShell ActiveDirectory menambahkan total 147 perintah.
Sudahkah Anda mengamati konvensi penamaan perintah ini? Kata benda dalam nama perintah diawali dengan AD untuk menghindari potensi konflik penamaan dengan perintah di modul lain. Awalan ini adalah praktik umum di antara modul PowerShell.
CommandType Name Version
----------- ---- -------
Cmdlet Add-ADCentralAccessPolicyMember 1.0.1.0
Cmdlet Add-ADComputerServiceAccount 1.0.1.0
Cmdlet Add-ADDomainControllerPasswordReplicationPolicy 1.0.1.0
Cmdlet Add-ADFineGrainedPasswordPolicySubject 1.0.1.0
Cmdlet Add-ADGroupMember 1.0.1.0
Cmdlet Add-ADPrincipalGroupMembership 1.0.1.0
Cmdlet Add-ADResourcePropertyListMember 1.0.1.0
Cmdlet Clear-ADAccountExpiration 1.0.1.0
Cmdlet Clear-ADClaimTransformLink 1.0.1.0
Cmdlet Disable-ADAccount 1.0.1.0
...
Secara default, Get-ADUser cmdlet mengambil serangkaian properti terbatas untuk objek pengguna dan membatasi outputnya ke 1.000 pengguna pertama. Kendala ini adalah pengoptimalan performa yang dirancang untuk menghindari Active Directory yang luar biasa dengan pengambilan data yang berlebihan.
Get-ADUser -Identity mike | Get-Member -MemberType Properties
Bahkan jika Anda hanya memiliki pemahaman dasar tentang Direktori Aktif, Anda mungkin mengenali bahwa akun pengguna memiliki lebih banyak properti daripada yang ditunjukkan dalam contoh.
TypeName: Microsoft.ActiveDirectory.Management.ADUser
Name MemberType Definition
---- ---------- ----------
DistinguishedName Property System.String DistinguishedName {get;set;}
Enabled Property System.Boolean Enabled {get;set;}
GivenName Property System.String GivenName {get;set;}
Name Property System.String Name {get;}
ObjectClass Property System.String ObjectClass {get;set;}
ObjectGUID Property System.Nullable`1[[System.Guid, mscorlib, Ve...
SamAccountName Property System.String SamAccountName {get;set;}
SID Property System.Security.Principal.SecurityIdentifier...
Surname Property System.String Surname {get;set;}
UserPrincipalName Property System.String UserPrincipalName {get;set;}
Get-ADUser Cmdlet menyertakan parameter Properti untuk menentukan properti tambahan di luar default yang ingin Anda ambil. Untuk mengembalikan semua properti, gunakan * karakter kartubebas sebagai nilai parameter.
Get-ADUser -Identity mike -Properties * | Get-Member -MemberType Properties
TypeName: Microsoft.ActiveDirectory.Management.ADUser
Name MemberType Definition
---- ---------- ----------
AccountExpirationDate Property System.DateTime AccountEx...
accountExpires Property System.Int64 accountExpir...
AccountLockoutTime Property System.DateTime AccountLo...
AccountNotDelegated Property System.Boolean AccountNot...
AllowReversiblePasswordEncryption Property System.Boolean AllowRever...
AuthenticationPolicy Property Microsoft.ActiveDirectory...
AuthenticationPolicySilo Property Microsoft.ActiveDirectory...
BadLogonCount Property System.Int32 BadLogonCoun...
badPasswordTime Property System.Int64 badPasswordT...
badPwdCount Property System.Int32 badPwdCount ...
CannotChangePassword Property System.Boolean CannotChan...
CanonicalName Property System.String CanonicalNa...
Certificates Property Microsoft.ActiveDirectory...
City Property System.String City {get;s...
CN Property System.String CN {get;}
codePage Property System.Int32 codePage {ge...
Company Property System.String Company {ge...
CompoundIdentitySupported Property Microsoft.ActiveDirectory...
Country Property System.String Country {ge...
countryCode Property System.Int32 countryCode ...
Created Property System.DateTime Created {...
createTimeStamp Property System.DateTime createTim...
Deleted Property System.Boolean Deleted {g...
Department Property System.String Department ...
Description Property System.String Description...
DisplayName Property System.String DisplayName...
DistinguishedName Property System.String Distinguish...
Division Property System.String Division {g...
DoesNotRequirePreAuth Property System.Boolean DoesNotReq...
dSCorePropagationData Property Microsoft.ActiveDirectory...
EmailAddress Property System.String EmailAddres...
EmployeeID Property System.String EmployeeID ...
EmployeeNumber Property System.String EmployeeNum...
Enabled Property System.Boolean Enabled {g...
Fax Property System.String Fax {get;set;}
GivenName Property System.String GivenName {...
HomeDirectory Property System.String HomeDirecto...
HomedirRequired Property System.Boolean HomedirReq...
HomeDrive Property System.String HomeDrive {...
HomePage Property System.String HomePage {g...
HomePhone Property System.String HomePhone {...
Initials Property System.String Initials {g...
instanceType Property System.Int32 instanceType...
isDeleted Property System.Boolean isDeleted ...
KerberosEncryptionType Property Microsoft.ActiveDirectory...
LastBadPasswordAttempt Property System.DateTime LastBadPa...
LastKnownParent Property System.String LastKnownPa...
lastLogoff Property System.Int64 lastLogoff {...
lastLogon Property System.Int64 lastLogon {g...
LastLogonDate Property System.DateTime LastLogon...
lastLogonTimestamp Property System.Int64 lastLogonTim...
LockedOut Property System.Boolean LockedOut ...
logonCount Property System.Int32 logonCount {...
LogonWorkstations Property System.String LogonWorkst...
Manager Property System.String Manager {ge...
MemberOf Property Microsoft.ActiveDirectory...
MNSLogonAccount Property System.Boolean MNSLogonAc...
MobilePhone Property System.String MobilePhone...
Modified Property System.DateTime Modified ...
modifyTimeStamp Property System.DateTime modifyTim...
msDS-User-Account-Control-Computed Property System.Int32 msDS-User-Ac...
Name Property System.String Name {get;}
nTSecurityDescriptor Property System.DirectoryServices....
ObjectCategory Property System.String ObjectCateg...
ObjectClass Property System.String ObjectClass...
ObjectGUID Property System.Nullable`1[[System...
objectSid Property System.Security.Principal...
Office Property System.String Office {get...
OfficePhone Property System.String OfficePhone...
Organization Property System.String Organizatio...
OtherName Property System.String OtherName {...
PasswordExpired Property System.Boolean PasswordEx...
PasswordLastSet Property System.DateTime PasswordL...
PasswordNeverExpires Property System.Boolean PasswordNe...
PasswordNotRequired Property System.Boolean PasswordNo...
POBox Property System.String POBox {get;...
PostalCode Property System.String PostalCode ...
PrimaryGroup Property System.String PrimaryGrou...
primaryGroupID Property System.Int32 primaryGroup...
PrincipalsAllowedToDelegateToAccount Property Microsoft.ActiveDirectory...
ProfilePath Property System.String ProfilePath...
ProtectedFromAccidentalDeletion Property System.Boolean ProtectedF...
pwdLastSet Property System.Int64 pwdLastSet {...
SamAccountName Property System.String SamAccountN...
sAMAccountType Property System.Int32 sAMAccountTy...
ScriptPath Property System.String ScriptPath ...
sDRightsEffective Property System.Int32 sDRightsEffe...
ServicePrincipalNames Property Microsoft.ActiveDirectory...
SID Property System.Security.Principal...
SIDHistory Property Microsoft.ActiveDirectory...
SmartcardLogonRequired Property System.Boolean SmartcardL...
sn Property System.String sn {get;set;}
State Property System.String State {get;...
StreetAddress Property System.String StreetAddre...
Surname Property System.String Surname {ge...
Title Property System.String Title {get;...
TrustedForDelegation Property System.Boolean TrustedFor...
TrustedToAuthForDelegation Property System.Boolean TrustedToA...
UseDESKeyOnly Property System.Boolean UseDESKeyO...
userAccountControl Property System.Int32 userAccountC...
userCertificate Property Microsoft.ActiveDirectory...
UserPrincipalName Property System.String UserPrincip...
uSNChanged Property System.Int64 uSNChanged {...
uSNCreated Property System.Int64 uSNCreated {...
whenChanged Property System.DateTime whenChang...
whenCreated Property System.DateTime whenCreat...
Konfigurasi default untuk mengambil properti akun pengguna Direktori Aktif sengaja dibatasi untuk menghindari masalah performa. Mencoba mengembalikan setiap properti untuk setiap akun pengguna di lingkungan Direktori Aktif produksi Anda dapat sangat menurunkan performa pengontrol dan jaringan domain Anda. Biasanya, Anda hanya memerlukan properti tertentu untuk pengguna tertentu. Namun, mengembalikan semua properti untuk satu pengguna wajar saat mengidentifikasi properti yang tersedia.
Tidak jarang menjalankan perintah beberapa kali saat membuat prototipe. Jika Anda mengantisipasi menjalankan kueri intensif sumber daya saat membuat prototipe perintah, pertimbangkan untuk mengeksekusinya sekali dan menyimpan hasilnya dalam variabel. Kemudian, Anda dapat bekerja dengan konten variabel secara lebih efisien daripada berulang kali menjalankan kueri intensif sumber daya.
Misalnya, perintah berikut mengambil semua properti untuk akun pengguna dan menyimpan hasilnya dalam variabel bernama $Users. Bekerja dengan konten variabel alih-alih $Users menjalankan Get-ADUser perintah beberapa kali. Ingat, konten variabel tidak diperbarui secara otomatis saat informasi pengguna berubah di Direktori Aktif.
$Users = Get-ADUser -Identity mike -Properties *
Anda dapat menjelajahi properti yang tersedia dengan mempipa $Users variabel ke Get-Member.
$Users | Get-Member -MemberType Properties
Untuk melihat properti tertentu seperti Nama, LastLogonDate Metode ini menampilkan properti yang diinginkan dan nilainya berdasarkan konten $Users variabel, menghilangkan kebutuhan akan beberapa kueri ke Direktori Aktif. Ini adalah pendekatan yang lebih efisien sumber daya daripada berulang kali menjalankan Get-ADUser perintah.
$Users | Select-Object -Property Name, LastLogonDate, LastBadPasswordAttempt
Saat Anda mengkueri Active Directory, filter data di sumber menggunakan Get-ADUser untuk mengembalikan hanya properti yang diperlukan.
Get-ADUser -Identity mike -Properties LastLogonDate, LastBadPasswordAttempt
DistinguishedName : CN=Mike F. Robbins,CN=Users,DC=mikefrobbins,DC=com
Enabled : True
GivenName : Mike
LastBadPasswordAttempt :
LastLogonDate : 11/14/2023 5:10:16 AM
Name : Mike F. Robbins
ObjectClass : user
ObjectGUID : 11c7b61f-46c3-4399-9ed0-ff4e453bc2a2
SamAccountName : mike
SID : S-1-5-21-611971124-518002951-3581791498-1105
Surname : Robbins
UserPrincipalName : μ@mikefrobbins.com
Ringkasan
Dalam bab ini, Anda mempelajari cara menentukan jenis objek apa yang dihasilkan perintah, properti dan metode apa yang tersedia untuk perintah, dan cara bekerja dengan perintah yang membatasi properti yang dikembalikan secara default.
Tinjauan
- Jenis objek apa yang
Get-Processdihasilkan cmdlet? - Bagaimana Anda menentukan properti yang tersedia untuk perintah?
- Apa yang harus Anda periksa apakah perintah ada untuk mendapatkan sesuatu tetapi tidak mengatur hal yang sama?
- Bagaimana beberapa perintah yang tidak mengembalikan output secara default dibuat untuk menghasilkan output?
- Apa yang harus Anda pertimbangkan saat membuat prototipe perintah yang menghasilkan sejumlah besar output?
Referensi
- Dapatkan Anggota
- Menampilkan Struktur Objek (Get-Member)
- about_Objects
- tentang_Properti
- tentang_Methods
- Tidak Ada Cmdlet PowerShell untuk Memulai atau Menghentikan Sesuatu? Jangan Lupa Untuk Memeriksa Metode pada Get Cmdlets
Langkah berikutnya
Di bab berikutnya, Anda akan mempelajari tentang satu baris dan alur.