Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
- RSAT'yi yükleme hakkında bilgi için bkz . Windows Yönetim modülleri.
- Windows'un eski sürümleri için bkz . Windows için RSAT.
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-Member
aktardığı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 Running
gösterir. Name özelliğinin değeri , w32time
DisplayName ö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 Can
baş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-Service
MemberType 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-Service
start yöntemi Get-Service
gibi 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-Service
yü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-Member
gö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-Service
PassThru 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-Member
nesne 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ı $Users
bir 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
- Cmdlet ne tür bir nesne
Get-Process
üretir? - Bir komut için kullanılabilir özellikleri nasıl belirlersiniz?
- Bir şey almak için bir komut varsa ama aynı şeyi ayarlamamak için neleri denetlemeniz gerekir?
- Varsayılan olarak çıkış döndürmeyen bazı komutlar çıkış oluşturmak için nasıl yapılabilir?
- Büyük miktarda çıkış üreten bir komutun prototipini oluştururken ne yapmayı göz önünde bulundurmanız gerekir?
Başvurular
- Üye Al
- Nesne Yapısını Görüntüleme (Get-Member)
- about_Objects
- about_Properties
- about_Methods
- Bir Şeyi Başlatacak veya Durduracak PowerShell Cmdlet'i yok mu? Get Cmdlet'lerinde Yöntemleri Denetlemeyi Unutmayın
Sonraki adımlar
Sonraki bölümde tek satırlı ve işlem hattı hakkında bilgi edineceksiniz.
PowerShell