Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A PowerShell egy objektumorientált szkriptnyelv. A .NET-keretrendszer definiált .NET-osztályokból származtatott strukturált objektumokat használó adatokat és rendszerállapotokat jelöl. A .NET-keretrendszer kihasználva a PowerShell hozzáférést biztosít a különböző rendszerképességekhez, beleértve a fájlrendszert, a beállításjegyzéket és a Windows Management Instrumentation (WMI) osztályokat. A PowerShell hozzáfér a .NET-keretrendszer osztálytárhoz is, amely számos osztályt tartalmaz, amelyekkel robusztus PowerShell-szkripteket fejleszthet.
A PowerShellben minden elem vagy állapot egy felderíthető és módosítható objektum példánya.
A Get-Member parancsmag a PowerShell által az objektumfelderítéshez biztosított elsődleges eszközök egyike, amely felfedi egy objektum jellemzőit. Ez a fejezet bemutatja, hogyan használja a PowerShell az objektumokat, és hogyan derítheti fel és módosíthatja ezeket az objektumokat a szkriptek egyszerűsítése és a rendszerek hatékonyabb kezelése érdekében.
Előfeltételek
Az ebben a fejezetben szereplő konkrét példák követéséhez győződjön meg arról, hogy a tesztkörnyezet számítógépe a tesztkörnyezet Active Directory-tartományának része. Telepítenie kell az Active Directory PowerShell-modult is, amely a Windows Távoli kiszolgáló felügyeleti eszközeivel (RSAT) van csomagban. Ha Windows 10 1809-as vagy újabb buildet használ, beleértve a Windows 11-et is, az RSAT-t Windows-funkcióként telepítheti.
Feljegyzés
Az Active Directory nem támogatott Windows Home-kiadásokhoz.
- Az RSAT telepítéséről további információt a Windows Management moduljaiban talál.
- A Windows régebbi verzióit lásd: RSAT for Windows.
Get-Member
Get-Member Betekintést nyújt a PowerShell-parancsokhoz társított objektumokba, tulajdonságokba és metódusokba. Bármely PowerShell-parancsot átküldhet, amely objektumalapú kimenetet hoz létre a Get-Member-ra.
Amikor egy parancs kimenetét a parancshoz Get-Memberirányítja, az megjeleníti a parancs által visszaadott objektum szerkezetét, részletezve annak tulajdonságait és módszereit.
- Tulajdonságok: Egy objektum attribútumai.
- Metódusok: Az objektumokon végrehajtható műveletek.
Ennek a koncepciónak a szemléltetéséhez tekintsük a jogosítványt analógiának. Mint minden objektum, az illesztőprogram licence is rendelkezik olyan tulajdonságokkal, mint például a szemszín, amely általában tartalmaz blue és brown értékeket.
Ezzel szemben a metódusok az objektumon végrehajtható műveleteket jelölik. A Visszavonás például egy olyan módszer, amelyet a Gépjárműosztály a vezetői engedély alapján hajthat végre.
Tulajdonságok
Ha a PowerShell használatával szeretné lekérni a windowsos időszolgáltatás részleteit a rendszeren, használja a Get-Service parancsmagot.
Get-Service -Name w32time
Az eredmények tartalmazzák az Állapot, Név és DisplayName tulajdonságokat. Az Állapot tulajdonság azt jelzi, hogy a szolgáltatás Running. A Név tulajdonság értéke
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time
Az összes elérhető tulajdonság és metódus listázásához Get-Service továbbítsd a Get-Member-be.
Get-Service -Name w32time | Get-Member
Az eredmények azt mutatják, hogy az első sor egy jelentős információt tartalmaz. A TypeName azonosítja a visszaadott objektum típusát, amely ebben a példában egy System.ServiceProcess.ServiceController objektum. Ebben a példában ez a név gyakran a TypeName utolsó részére rövidül, például a ServiceControllerre.
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();
Figyelje meg, hogy Get-Serviceaz Get-Member alapértelmezettnél több tulajdonság jelenik meg. Bár ezek a további tulajdonságok alapértelmezés szerint nem jelennek meg, kiválaszthatja őket Select-Object a Tulajdonság paraméterrel. Az alábbi példa az összes tulajdonságot kiválasztja, úgy hogy a Get-Service parancs eredményét továbbítja a Select-Object parancsnak, és a * helyettesítő karaktert adja meg a tulajdonság paraméter értékének.
Get-Service -Name w32time | Select-Object -Property *
A PowerShell alapértelmezés szerint négy tulajdonságot ad vissza táblázatként, öt vagy több tulajdonságot pedig listaként. Egyes parancsok azonban egyéni formázást alkalmaznak a táblákban megjelenített tulajdonságok alapértelmezett számának felülbírálásához.
Ezeket az alapértelmezett értékeket manuálisan felülírhatja a Format-Table és Format-List használatával.
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 :
Az egyes tulajdonságok vesszővel tagolt listával is kiválaszthatók a Tulajdonság paraméter értékeként.
Get-Service -Name w32time |
Select-Object -Property Status, Name, DisplayName, ServiceType
Status Name DisplayName ServiceType
------ ---- ----------- -----------
Running w32time Windows Time Win32OwnProcess, Win32ShareProcess
A tulajdonságnevek Select-Objectmegadásakor helyettesítő karaktereket is használhat.
Az alábbi példában a Can* értéket használja a Tulajdonság paraméter egyik értékeként, hogy visszaadja az összes olyan tulajdonságot, amely a Can-val kezdődik. Ezek közé tartozik a CanPauseAndContinue, a CanShutdown és a CanStop.
Get-Service -Name w32time |
Select-Object -Property Status, DisplayName, Can*
Figyelje meg, hogy az alapértelmezettnél több tulajdonság van felsorolva.
Status : Running
DisplayName : Windows Time
CanPauseAndContinue : False
CanShutdown : True
CanStop : True
Metódusok
A metódusok objektumokon végrehajtható műveletek. A MemberType paraméter használatával szűkítheti az Get-Member eredményeket, hogy csak a metódusok jelenjenek meg Get-Service.
Get-Service -Name w32time | Get-Member -MemberType Method
Mint látható, számos módszer létezik.
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...
A Stop metódussal leállíthat egy Windows-szolgáltatást. Ezt a parancsot emelt szintű PowerShell-munkamenetből kell futtatnia.
(Get-Service -Name w32time).Stop()
A Windows Time szolgáltatás állapotának lekérdezése annak ellenőrzéséhez, hogy le van-e állítva.
Get-Service -Name w32time
Status Name DisplayName
------ ---- -----------
Stopped w32time Windows Time
Előfordulhat, hogy takarékosan használja a metódusokat, de tisztában kell lennie velük. Néha talál Get-* parancsokat anélkül, hogy lenne hozzájuk tartozó Set-* parancs. Ebben a forgatókönyvben gyakran talál egy metódust a Set-* műveletek végrehajtására. Az Get-SqlAgentJob SqlServer PowerShell-modul parancsmagja kiváló példa. Nincs megfelelő Set-* parancsmag, de egy metódussal elvégezheti ugyanazt a feladatot. Az SqlServer PowerShell-modulról és a telepítési utasításokról az SQL Server PowerShell áttekintésében talál további információt.
A módszerekkel való ismerkedés másik oka, hogy egyes PowerShell-felhasználók feltételezik, hogy nem végezhet romboló módosításokat a parancsokkal Get-* , de valójában súlyos problémákat okozhatnak, ha visszaélnek velük.
Jobb megoldás egy dedikált parancsmag használata, ha létezik egy művelet végrehajtásához. Például a Start-Service parancsmaggal indítsa el a Windows Time szolgáltatást.
Alapértelmezés szerint a Start-Service, hasonlóan a Start metódushoz Get-Service, nem ad vissza eredményt.
A parancsmagok használatának egyik előnye azonban az, hogy gyakran biztosít olyan további képességeket, amelyek nem érhetők el egy metódussal.
A következő példában használja a PassThru paramétert, amely egy olyan parancsmagot eredményez, amely általában nem hoz létre kimenetet.
Mivel a PowerShell nem vesz részt a felhasználói fiók felügyeletben (UAC), az emelt jogosultságot igénylő parancsokat, például a Start-Service, emelt szintű PowerShell-munkamenetből kell futtatnia.
Get-Service -Name w32time | Start-Service -PassThru
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time
Feljegyzés
A PowerShell-parancsmagok használatakor fontos elkerülni a kimenettel kapcsolatos feltételezéseket.
A tesztkörnyezeti számítógépen futó PowerShell-folyamatról a Get-Process parancsmaggal tájékozódhat.
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
A rendelkezésre álló tulajdonságok meghatározásához csővezesse Get-Process a Get-Member kimenetére.
Get-Process -Name powershell | Get-Member
A parancs használatakor Get-Process előfordulhat, hogy a parancs eredményeinek megtekintésekor az alapértelmezés szerint megjelenített tulajdonságok némelyike Get-Memberhiányzik. Ennek a viselkedésnek az az oka, hogy az alapértelmezés szerint megjelenített értékek közül több, például NPM(K)a , PM(K), WS(K)és CPU(s)a számított tulajdonságok. A tényleges tulajdonságnevek meghatározásához Get-Member csőparancsokat kell megadnia.
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...
Nem lehet egy parancsot Get-Member csővezetéken átvinni, ha az nem hoz létre kimenetet. Mivel a Start-Service alapértelmezés szerint nem hoz létre kimenetet, annak Get-Member-be történő csövezése hibát eredményez.
Start-Service -Name w32time | Get-Member
Feljegyzés
Hogy Get-Member-ra irányítható legyen, a parancsnak objektum alapú kimenetet kell létrehoznia.
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
A hiba elkerülése érdekében adja meg a PassThru paramétert a következővel Start-Service: . Ahogy korábban említettük, a PassThru paraméter hozzáadása olyan parancsmagot eredményez, amely általában nem hoz létre kimenetet.
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 A kimenetet közvetlenül a PowerShell-gazdagépen jeleníti meg, és nem hoz létre objektumalapú kimenetet. Ennek eredményeképpen nem lehet a kimenetét továbbítani a Get-Member-ba, amely objektumalapú bemenetet igényel.
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 (Parancsok lekérése)
A parancs által előállított objektumtípus ismeretében olyan parancsokat kereshet, amelyek bemenetként elfogadják az adott objektumtípust.
Get-Command -ParameterType ServiceController
Az alábbi parancsok folyamat- vagy paraméterbemenettel fogadnak el Egy ServiceController-objektumot .
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
Feljegyzés
A fejezet előfeltételeiben leírtaknak megfelelően győződjön meg arról, hogy az RSAT telepítve van ehhez a szakaszhoz. Emellett a tesztkörnyezet számítógépének a tesztkörnyezet Active Directory-tartományának tagjának kell lennie.
Az ActiveDirectory PowerShell-modulhoz az RSAT telepítése után hozzáadott parancsok azonosításához használja a Get-Command paraméterrel kombinálva. Az alábbi példa az ActiveDirectory modulban elérhető összes parancsot felsorolja .
Get-Command -Module ActiveDirectory
Az ActiveDirectory PowerShell-modul összesen 147 parancsot adott hozzá.
Betartja a parancsok elnevezési konvencióját? A parancsnevekben szereplő főnevek AD-előtaggal vannak elosztva, így elkerülhetők a más modulok parancsaival való esetleges elnevezési ütközések. Ez az előtagolás a PowerShell-modulok gyakori gyakorlata.
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
...
A parancsmag alapértelmezés szerint csak korlátozott tulajdonságokat kér le a felhasználói objektumokhoz, Get-ADUser és a kimenetét az első 1000 felhasználóra korlátozza. Ez a kényszer egy teljesítményoptimalizálás, amelynek célja, hogy elkerülje az Active Directory túlterheltségét a túlzott adatlekéréssel.
Get-ADUser -Identity mike | Get-Member -MemberType Properties
Még ha csak alapszintű ismereteket is tud az Active Directoryról, akkor is felismerheti, hogy egy felhasználói fiók több tulajdonsággal rendelkezik, mint a példában láthatóak.
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;}
A Get-ADUser parancsmag tartalmaz egy Tulajdonságok paramétert, amely további tulajdonságokat határoz meg a lekérni kívánt alapértelmezett értékeken túl. Az összes tulajdonság visszaadásához használja a * helyettesítő karaktert paraméterértékként.
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...
Az Active Directory felhasználói fiók tulajdonságainak beolvasásához használt alapértelmezett konfiguráció szándékosan korlátozott a teljesítményproblémák elkerülése érdekében. Ha az éles Active Directory-környezetben minden felhasználói fiók minden tulajdonságát vissza szeretné adni, az jelentősen ronthatja a tartományvezérlők és a hálózat teljesítményét. Általában csak meghatározott tulajdonságokra van szükség bizonyos felhasználók számára. Az elérhető tulajdonságok azonosításakor azonban ésszerű egyetlen felhasználó összes tulajdonságának visszaadása.
Nem ritka, hogy többször is futtat egy parancsot, amikor prototípust készít. Ha erőforrás-igényes lekérdezést szeretne futtatni egy parancs prototípusának futtatásakor, érdemes lehet egyszer végrehajtani, és egy változóban tárolhatja az eredményeket. Ezután hatékonyabban dolgozhat a változó tartalmával, mint egy erőforrás-igényes lekérdezés ismételt végrehajtása.
Az alábbi parancs például lekéri egy felhasználói fiók összes tulajdonságát, és az eredményeket egy névvel ellátott $Usersváltozóban tárolja. A parancs többszöri futtatása helyett használja a $UsersGet-ADUser változó tartalmát. Ne feledje, hogy a változó tartalma nem frissül automatikusan, amikor egy felhasználó adatai megváltoznak az Active Directoryban.
$Users = Get-ADUser -Identity mike -Properties *
A rendelkezésre álló tulajdonságok megismeréséhez a $Users változót át kell csöveznie a Get-Member-re.
$Users | Get-Member -MemberType Properties
Az olyan tulajdonságok megtekintéséhez, mint a Név, a LastLogonDate és a LastBadPasswordAttempt, a változót a $Users következőre kell átirányítani Select-Object. Ez a metódus a változó tartalma $Users alapján jeleníti meg a kívánt tulajdonságokat és értékeket, így nincs szükség több lekérdezésre az Active Directoryban. Erőforrás-hatékonyabb módszer, mint a Get-ADUser parancs ismételt végrehajtása.
$Users | Select-Object -Property Name, LastLogonDate, LastBadPasswordAttempt
Az Active Directory lekérdezésekor szűrje a forrásban lévő adatokat a Tulajdonságok paraméterrel Get-ADUser , hogy csak a szükséges tulajdonságokat adja vissza.
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
Összegzés
Ebben a fejezetben megismerhette, hogyan határozhatja meg, hogy a parancs milyen típusú objektumot hoz létre, milyen tulajdonságok és metódusok érhetők el egy parancshoz, és hogyan használható az alapértelmezés szerint visszaadott tulajdonságokat korlátozó parancsokkal.
Áttekintés
- Milyen típusú objektumot hoz létre a
Get-Processparancsmag? - Hogyan állapítható meg, hogy a parancsok milyen tulajdonságokat használhatnak?
- Mit kell ellenőriznie, ha létezik egy parancs, amely lekér valamit, de nem állítja be ugyanazt?
- Hogyan hozhatók létre olyan parancsok, amelyek alapértelmezés szerint nem adnak vissza kimenetet?
- Mit érdemes megfontolnia, amikor olyan parancsot prototípusol, amely nagy mennyiségű kimenetet termel?
Hivatkozások
- get-member
- Az objektumstruktúra megtekintése (Get-Member)
- about_Objects
- Tulajdonságokról
- Módszerekről
- Nincs PowerShell-parancsmag, amely elindíthat vagy leállíthat valamit? Ne felejtsen el metódusokat keresni a Get parancsmagokon
Következő lépések
A 4. fejezetben megtanulod az egysorosokat és a csővezetékeket.