Aracılığıyla paylaş


3. Bölüm - Nesneleri, özellikleri ve yöntemleri bulma

PowerShell, nesne odaklı bir betik dilidir. .NET Framework'te tanımlanan .NET sınıflarından türetilen yapılandırılmış nesneleri kullanan verileri ve sistem durumlarını temsil eder. PowerShell, .NET Framework'ü kullanarak dosya sistemi, kayıt defteri ve Windows Yönetim Araçları (WMI) sınıfları gibi çeşitli sistem özelliklerine erişim sağlar. PowerShell ayrıca güçlü PowerShell betikleri geliştirmek için kullanabileceğiniz çok sayıda sınıf koleksiyonu içeren .NET Framework sınıf kitaplığına da erişebilir.

PowerShell'de her öğe veya durum, keşfedilebilen ve işlenebilen bir nesnenin örneğidir. Get-Member Cmdlet, Nesne bulma için PowerShell tarafından sağlanan ve nesnenin özelliklerini ortaya koyan birincil araçlardan biridir. Bu bölümde PowerShell'in nesnelerden nasıl yararlanabileceği ve betiklerinizi kolaylaştırmak ve sistemlerinizi daha verimli bir şekilde yönetmek için bu nesneleri nasıl keşfedip yönetebileceğiniz açıklanır.

Önkoşullar

Bu bölümdeki belirli örnekleri izlemek için laboratuvar ortamı bilgisayarınızın laboratuvar ortamı Active Directory etki alanınızın bir parçası olduğundan emin olun. Ayrıca, Windows Uzak Sunucu Yönetim Araçları (RSAT) ile birlikte gelen Active Directory PowerShell modülünü de yüklemeniz gerekir. Windows 11 dahil olmak üzere Windows 10 derleme 1809 veya üzerini kullanıyorsanız RSAT'yi bir Windows özelliği olarak yükleyebilirsiniz.

Not

Windows Home sürümleri için Active Directory desteklenmez.

Get-Member

Get-Member PowerShell komutları ile ilişkili nesneler, özellikler ve yöntemler hakkında içgörü sağlar. nesne tabanlı çıkış üreten herhangi bir PowerShell komutunu adresine aktarabilirsiniz Get-Member. Komutun çıkışını öğesine Get-Memberaktardığınızda, komutu tarafından döndürülen nesnenin yapısını ortaya çıkararak özellikleri ve yöntemleri ayrıntılı olarak gösterilir.

  • Özellikler: Bir nesnenin öznitelikleri.
  • Yöntemler: Bir nesne üzerinde gerçekleştirebileceğiniz eylemler.

Bu kavramı göstermek için, bir sürücü ehliyetini benzetme olarak düşünün. Herhangi bir nesne gibi, sürücü lisansının da genellikle ve brown değerlerini içeren blue göz rengi gibi özellikleri vardır. Buna karşılık, yöntemler nesne üzerinde gerçekleştirebileceğiniz eylemleri temsil eder. Örneğin, İptal, Motorlu Taşıtlar Departmanı'nın bir sürücü belgesi üzerinde gerçekleştirebileceği bir yöntemdir.

Properties

PowerShell kullanarak sisteminizdeki Windows Saat hizmeti hakkındaki ayrıntıları almak için cmdlet'ini Get-Service kullanın.

Get-Service -Name w32time

Sonuçlar Status, Name ve DisplayName özelliklerini içerir. Status özelliği, hizmetin olduğunu Runninggösterir. Name özelliğinin değeri , w32timeDisplayName özelliğinin değeri ise şeklindedirWindows Time.

Status   Name               DisplayName
------   ----               -----------
Running  w32time            Windows Time

için tüm kullanılabilir özellikleri ve yöntemleri listelemek için Get-Serviceöğesine yöneltin Get-Member.

Get-Service -Name w32time | Get-Member

Sonuçlar, ilk satırın tek bir önemli bilgi içerdiğini gösterir. TypeName, döndürülen nesne türünü tanımlar. Bu örnekte System.ServiceProcess.ServiceController nesnesidir. Bu ad genellikle bu örnekte TypeName değerinin son bölümüyle kısaltılır(ServiceController gibi).

   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();

adresine yönelttiğinize Get-Service Get-Member, varsayılan olarak görüntülenenden daha fazla özellik olduğuna dikkat edin. Bu ek özellikler varsayılan olarak gösterilmese de, özellik parametresine Select-Object gidip kullanarak bunları seçebilirsiniz. Aşağıdaki örnek, 'nin Get-Service Select-Object sonuçlarını ekleyerek ve Özellik parametresinin değeri olarak joker karakteri belirterek * tüm özellikleri seçer.

Get-Service -Name w32time | Select-Object -Property *

Varsayılan olarak, PowerShell tablo olarak dört özellik ve liste olarak beş veya daha fazla özellik döndürür. Ancak bazı komutlar, tabloda görüntülenen varsayılan özellik sayısını geçersiz kılmak için özel biçimlendirme uygular. bu varsayılanları el ile geçersiz kılmak için ve Format-List kullanabilirsinizFormat-Table.

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           :

Belirli özellikler, Property parametresinin değeri olarak virgülle ayrılmış bir liste kullanılarak da seçilebilir.

Get-Service -Name w32time |
    Select-Object -Property Status, Name, DisplayName, ServiceType
 Status Name    DisplayName                         ServiceType
 ------ ----    -----------                         -----------
Running w32time Windows Time Win32OwnProcess, Win32ShareProcess

ile Select-Objectözellik adlarını belirtirken joker karakterler kullanabilirsiniz.

Aşağıdaki örnekte, ile Canbaşlayan tüm özellikleri döndürmek için Property parametresinin değerlerinden biri olarak kullanınCan*. Bunlar CanPauseAndContinue, CanShutdown ve CanStop'dur.

Get-Service -Name w32time |
    Select-Object -Property Status, DisplayName, Can*

Varsayılan olarak görüntülenenden daha fazla özellik listelendiğine dikkat edin.

Status              : Running
DisplayName         : Windows Time
CanPauseAndContinue : False
CanShutdown         : True
CanStop             : True

Yöntemler

Yöntemler, bir nesne üzerinde gerçekleştirebileceğiniz eylemlerdir. Yalnızca yöntemlerini görüntülemek üzere sonuçlarını Get-Member daraltmak için Get-ServiceMemberType parametresini kullanın.

Get-Service -Name w32time | Get-Member -MemberType Method

Gördüğünüz gibi, çeşitli yöntemler vardır.

   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...

Bir Windows hizmetini durdurmak için Stop yöntemini kullanabilirsiniz. Bu komutu yükseltilmiş bir PowerShell oturumundan çalıştırmanız gerekir.

(Get-Service -Name w32time).Stop()

Durdurulduğunu onaylamak için Windows Saat hizmetinin durumunu sorgulayın.

Get-Service -Name w32time
Status   Name               DisplayName
------   ----               -----------
Stopped  w32time            Windows Time

Yöntemleri tedbirli bir şekilde kullanabilirsiniz, ancak bunların farkında olmanız gerekir. Bazen, karşılık gelen Set-* bir komut olmadan komutları bulursunuzGet-*. Genellikle bu senaryoda eylem gerçekleştirmek için bir Set-* yöntem bulabilirsiniz. Get-SqlAgentJob SqlServer PowerShell modülündeki cmdlet mükemmel bir örnektir. Karşılık gelen Set-* cmdlet yok, ancak aynı görevi tamamlamak için bir yöntem kullanabilirsiniz. SqlServer PowerShell modülü ve yükleme yönergeleri hakkında daha fazla bilgi için bkz. SQL Server PowerShell'e genel bakış.

Yöntemlerin farkında olmanın bir diğer nedeni de bazı PowerShell kullanıcılarının komutlarla Get-* yıkıcı değişiklikler yapamayabileceğinizi varsaymalarıdır, ancak kötüye kullanıldığında ciddi sorunlara neden olabilirler.

Daha iyi bir seçenek, eylem gerçekleştirmek için varsa ayrılmış bir cmdlet kullanmaktır. Örneğin, Windows Saat hizmetini başlatmak için cmdlet'ini kullanın Start-Service .

Varsayılan olarak, Start-Servicestart yöntemi Get-Servicegibi herhangi bir sonuç döndürmez. Ancak, cmdlet kullanmanın avantajlarından biri genellikle bir yöntemle kullanılamayabilecek ek özellikler sağlamasıdır.

Aşağıdaki örnekte, genellikle çıkış oluşturmayan bir cmdlet'in çıkış oluşturmasına neden olan PassThru parametresini kullanın.

PowerShell, Kullanıcı Erişim Denetimi'ne (UAC) katılmadığından, Start-Serviceyükseltilmiş bir PowerShell oturumundan gibi yükseltme gerektiren komutları çalıştırmanız gerekir.

Get-Service -Name w32time | Start-Service -PassThru
Status   Name               DisplayName
------   ----               -----------
Running  w32time            Windows Time

Not

PowerShell cmdlet'leriyle çalışırken, çıktıları hakkında varsayımlarda bulunmamak önemlidir.

Laboratuvar ortamı bilgisayarınızda çalışan PowerShell işlemi hakkında bilgi almak için cmdlet'ini Get-Process kullanın.

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

Kullanılabilir özellikleri belirlemek için adresine kanal Get-Process açın Get-Member.

Get-Process -Name powershell | Get-Member

komutunu kullanırken Get-Process , sonuçlarını Get-Membergörüntülerken varsayılan olarak görüntülenen bazı özelliklerin eksik olduğunu fark edebilirsiniz. Bu davranışın nedeni, varsayılan olarak gösterilen , PM(K), WS(K)ve CPU(s)gibi NPM(K)değerlerin birkaçının hesaplanmış özellikler olmasıdır. Gerçek özellik adlarını belirlemek için komutlarını adresine Get-Member yöneltmelisiniz.

   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...

Çıktı oluşturmayan bir komutu kanala Get-Member aktaramazsınız. Varsayılan Start-Service olarak çıkış üretmediğinden, bunu bir hataya neden olacak şekilde kanala aktarma girişiminde Get-Member bulunur.

Start-Service -Name w32time | Get-Member

Not

öğesine yöneltmek için Get-Member, bir komutun nesne tabanlı çıkış üretmesi gerekir.

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

Bu hatayı önlemek için ile Start-ServicePassThru parametresini belirtin. Daha önce belirtildiği gibi, PassThru parametresinin eklenmesi genellikle çıkış oluşturmak için çıkış üretmeyen bir cmdlet'e neden olur.

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 , çıkışı doğrudan PowerShell konağından gösterecek şekilde tasarlanmıştır ve nesne tabanlı çıkış üretmez. Sonuç olarak, çıktısını Get-Membernesne tabanlı giriş gerektiren öğesine yöneltemezsiniz.

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

Bir komutun ürettiği nesnenin türünü bilmek, bu tür bir nesneyi giriş olarak kabul eden komutları aramanıza olanak tanır.

Get-Command -ParameterType ServiceController

Aşağıdaki komutlar işlem hattı veya parametre girişi aracılığıyla bir ServiceController nesnesini kabul eder.

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

Active Directory

Not

Bölüm önkoşullarında belirtildiği gibi, bu bölüm için RSAT'nin yüklü olduğundan emin olun. Ayrıca, laboratuvar ortamı bilgisayarınızın, laboratuvar ortamı Active Directory etki alanınızın bir üyesi olması gerekir.

RSAT'yi yükledikten sonra ActiveDirectory PowerShell modülüne eklenen komutları tanımlamak için Module parametresiyle birlikte kullanınGet-Command. Aşağıdaki örnek, ActiveDirectory modülünde kullanılabilen tüm komutları listeler.

Get-Command -Module ActiveDirectory

ActiveDirectory PowerShell modülü toplam 147 komut ekledi.

Bu komutların adlandırma kuralını gözlemlediniz mi? Diğer modüllerdeki komutlarla olası adlandırma çakışmalarını önlemek için komut adlarındaki adlara AD ön eki eklenir. Bu ön ek, PowerShell modülleri arasında yaygın bir uygulamadır.

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
...

Varsayılan olarak, Get-ADUser cmdlet kullanıcı nesneleri için sınırlı bir özellik kümesi alır ve çıkışını ilk 1.000 kullanıcıyla sınırlar. Bu kısıtlama, aşırı veri alma işlemiyle Active Directory'nin aşırı yüklenmesini önlemek için tasarlanmış bir performans iyileştirmesidir.

Get-ADUser -Identity mike | Get-Member -MemberType Properties

Active Directory hakkında yalnızca temel bilgilere sahip olsanız bile, bir kullanıcı hesabının örnekte gösterilenden daha fazla özelliğe sahip olduğunu fark edebilirsiniz.

   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;}

Cmdlet, Get-ADUser almak istediğiniz varsayılanların ötesinde ek özellikler belirtmek için bir Properties parametresi içerir. Tüm özellikleri döndürmek için parametre değeri olarak joker karakteri kullanın * .

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...

Active Directory kullanıcı hesabı özelliklerini almak için varsayılan yapılandırma, performans sorunlarını önlemek için kasıtlı olarak sınırlıdır. Üretim Active Directory ortamınızdaki her kullanıcı hesabının her özelliğini döndürmeye çalışmak, etki alanı denetleyicilerinizin ve ağınızın performansını ciddi ölçüde düşürebilir. Genellikle, yalnızca belirli kullanıcılar için belirli özelliklere ihtiyacınız vardır. Ancak, kullanılabilir özellikleri tanımlarken tek bir kullanıcının tüm özelliklerini döndürmek mantıklıdır.

Bir komutu prototip oluştururken birden çok kez çalıştırmak sık karşılaşılan bir durum değildir. Bir komutun prototipini oluştururken yoğun kaynak kullanan bir sorgu çalıştırmayı düşünüyorsanız, bir kez yürütmeyi ve sonuçları bir değişkende depolamayı göz önünde bulundurun. Daha sonra değişkenin içeriğiyle, yoğun kaynak gerektiren bir sorguyu tekrar tekrar yürütmeye kıyasla daha verimli bir şekilde çalışabilirsiniz.

Örneğin, aşağıdaki komut bir kullanıcı hesabının tüm özelliklerini alır ve sonuçları adlı $Usersbir değişkende depolar. Komutu birden çok kez çalıştırmak yerine değişkenin Get-ADUser içeriğiyle $Users çalışın. Active Directory'de kullanıcının bilgileri değiştiğinde değişkenin içeriğinin otomatik olarak güncelleştirilmiyor olduğunu unutmayın.

$Users = Get-ADUser -Identity mike -Properties *

değişkenini Get-Memberöğesine ekleyerek $Users kullanılabilir özellikleri keşfedebilirsiniz.

$Users | Get-Member -MemberType Properties

Name, LastLogonDate ve LastBadPasswordAttempt gibi belirli özellikleri görüntülemek için değişkenine yöneltin $Users Select-Object. Bu yöntem, istenen özellikleri ve değerlerini değişkenin $Users içeriğine göre görüntüleyerek Active Directory'ye yönelik birden çok sorgu gereksinimini ortadan kaldırır. Bu, komutu tekrar tekrar yürütmekten daha kaynak verimli bir yaklaşımdır Get-ADUser .

$Users | Select-Object -Property Name, LastLogonDate, LastBadPasswordAttempt

Active Directory'yi sorguladığınızda, yalnızca gerekli özellikleri döndürmek için kaynağındaki verileri Properties parametresini Get-ADUser kullanarak filtreleyin.

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

Özet

Bu bölümde, bir komutun ürettiği nesne türünü, bir komut için hangi özelliklerin ve yöntemlerin kullanılabilir olduğunu ve varsayılan olarak döndürülen özellikleri sınırlayan komutlarla çalışmayı öğrendiniz.

İnceleyin

  1. Cmdlet ne tür bir nesne Get-Process üretir?
  2. Bir komut için kullanılabilir özellikleri nasıl belirlersiniz?
  3. Bir şey almak için bir komut varsa ama aynı şeyi ayarlamamak için neleri denetlemeniz gerekir?
  4. Varsayılan olarak çıkış döndürmeyen bazı komutlar çıkış oluşturmak için nasıl yapılabilir?
  5. Büyük miktarda çıkış üreten bir komutun prototipini oluştururken ne yapmayı göz önünde bulundurmanız gerekir?

Başvurular

Sonraki adımlar

Sonraki bölümde tek satırlı ve işlem hattı hakkında bilgi edineceksiniz.