Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
PowerShell is een objectgeoriënteerde scripttaal. Het vertegenwoordigt gegevens- en systeemstatussen met behulp van gestructureerde objecten die zijn afgeleid van .NET-klassen die zijn gedefinieerd in .NET Framework. Door gebruik te maken van .NET Framework biedt PowerShell toegang tot verschillende systeemmogelijkheden, zoals bestandssysteem-, register- en WMI-klassen (Windows Management Instrumentation). PowerShell heeft ook toegang tot de .NET Framework-klassebibliotheek, die een uitgebreide verzameling klassen bevat die u kunt gebruiken om robuuste PowerShell-scripts te ontwikkelen.
In PowerShell is elk item of elke status een exemplaar van een object dat kan worden verkend en gemanipuleerd.
De Get-Member cmdlet is een van de primaire hulpprogramma's van PowerShell voor objectdetectie, waarmee de kenmerken van een object worden weergegeven. In dit hoofdstuk wordt uitgelegd hoe PowerShell gebruikmaakt van objecten en hoe u deze objecten kunt detecteren en manipuleren om uw scripts te stroomlijnen en uw systemen efficiënter te beheren.
Vereisten
Als u de specifieke voorbeelden in dit hoofdstuk wilt volgen, moet u ervoor zorgen dat uw labomgevingcomputer deel uitmaakt van het Active Directory-domein van uw labomgeving. U moet ook de Active Directory PowerShell-module installeren die is gebundeld met de Windows Remote Server Administration Tools (RSAT). Als u Windows 10 build 1809 of hoger gebruikt, inclusief Windows 11, kunt u RSAT installeren als een Windows-functie.
Notitie
Active Directory wordt niet ondersteund voor Windows Home-edities.
- Zie Windows Management-modules voor meer informatie over het installeren van RSAT.
- Zie RSAT voor Windows voor oudere versies van Windows.
Get-Member
Get-Member biedt inzicht in de objecten, eigenschappen en methoden die zijn gekoppeld aan PowerShell-opdrachten. U kunt elke PowerShell-opdracht doorsluisen die objectuitvoer produceert naar Get-Member.
Wanneer u de uitvoer van een opdracht doorsluist naar Get-Member, wordt de structuur van het object weergegeven dat door de opdracht wordt geretourneerd, waarin de eigenschappen en methoden worden beschreven.
- Eigenschappen: de kenmerken van een object.
- Methoden: De acties die u op een object kunt uitvoeren.
Om dit concept te illustreren, kunt u een rijbewijs beschouwen als een analogie. Net als elk object heeft een rijbewijs eigenschappen, zoals oogkleur, die doorgaans waarden blue en waarden bevatbrown.
Methoden vertegenwoordigen daarentegen acties die u op het object kunt uitvoeren. Revoke is bijvoorbeeld een methode die de afdeling motorvoertuigen kan uitvoeren op een rijbewijs.
Eigenschappen
Gebruik de Get-Service cmdlet om details over de Windows Time-service op uw systeem op te halen met behulp van PowerShell.
Get-Service -Name w32time
De resultaten bevatten de eigenschappen Status, Name en DisplayName . De eigenschap Status geeft aan dat de service is Running. De waarde voor de eigenschap Name is w32timeen de waarde voor de eigenschap DisplayName is Windows Time.
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time
Als u alle beschikbare eigenschappen en methoden wilt Get-Serviceweergeven, kunt u deze doorsluisen naar Get-Member.
Get-Service -Name w32time | Get-Member
De resultaten geven aan dat de eerste regel één stukje belangrijke informatie bevat. TypeName identificeert het type object dat wordt geretourneerd, wat in dit voorbeeld een System.ServiceProcess.ServiceController-object is. Deze naam wordt vaak afgekort tot het laatste deel van de TypeName, zoals ServiceController, in dit voorbeeld.
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();
Let op wanneer u doorsluist Get-Service naar Get-Member, er meer eigenschappen zijn dan standaard wordt weergegeven. Hoewel deze aanvullende eigenschappen niet standaard worden weergegeven, kunt u ze selecteren door te sluisen naar Select-Object en de parameter Eigenschap te gebruiken. In het volgende voorbeeld worden alle eigenschappen geselecteerd door de resultaten van Get-Service aan en Select-Object het * jokerteken op te geven als de waarde voor de parameter Eigenschap .
Get-Service -Name w32time | Select-Object -Property *
PowerShell retourneert standaard vier eigenschappen als een tabel en vijf of meer als een lijst. Sommige opdrachten passen echter aangepaste opmaak toe om het standaardaantal eigenschappen te overschrijven dat in een tabel wordt weergegeven.
U kunt deze standaardinstellingen handmatig gebruiken Format-Table en Format-List overschrijven.
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 :
Specifieke eigenschappen kunnen ook worden geselecteerd met behulp van een door komma's gescheiden lijst als de waarde van de parameter Eigenschap .
Get-Service -Name w32time |
Select-Object -Property Status, Name, DisplayName, ServiceType
Status Name DisplayName ServiceType
------ ---- ----------- -----------
Running w32time Windows Time Win32OwnProcess, Win32ShareProcess
U kunt jokertekens gebruiken bij het opgeven van eigenschapsnamen met Select-Object.
Gebruik Can* in het volgende voorbeeld als een van de waarden voor de parameter Eigenschap om alle eigenschappen te retourneren die beginnen met Can. Deze omvatten CanPauseAndContinue, CanShutdown en CanStop.
Get-Service -Name w32time |
Select-Object -Property Status, DisplayName, Can*
U ziet dat er meer eigenschappen worden weergegeven dan standaard wordt weergegeven.
Status : Running
DisplayName : Windows Time
CanPauseAndContinue : False
CanShutdown : True
CanStop : True
Methoden
Methoden zijn acties die u op een object kunt uitvoeren. Gebruik de parameter MemberType om de resultaten Get-Member te beperken om alleen de methoden voor Get-Serviceweer te geven.
Get-Service -Name w32time | Get-Member -MemberType Method
Zoals u kunt zien, zijn er verschillende methoden.
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...
U kunt de stopmethode gebruiken om een Windows-service te stoppen. U moet deze opdracht uitvoeren vanuit een PowerShell-sessie met verhoogde bevoegdheid.
(Get-Service -Name w32time).Stop()
Voer een query uit op de status van de Windows Time-service om te bevestigen dat deze is gestopt.
Get-Service -Name w32time
Status Name DisplayName
------ ---- -----------
Stopped w32time Windows Time
U kunt methoden spaarzaam gebruiken, maar u moet er rekening mee houden. Soms vindt Get-* u opdrachten zonder een bijbehorende Set-* opdracht. Vaak kunt u een methode vinden om een Set-* actie uit te voeren in dit scenario. De Get-SqlAgentJob cmdlet in de SqlServer PowerShell-module is een uitstekend voorbeeld. Er bestaat geen bijbehorende Set-* cmdlet, maar u kunt een methode gebruiken om dezelfde taak te voltooien. Zie het overzicht van SQL Server PowerShell voor meer informatie over de SqlServer PowerShell-module en installatie-instructies.
Een andere reden om op de hoogte te zijn van methoden is dat sommige PowerShell-gebruikers ervan uitgaan dat u geen destructieve wijzigingen Get-* met opdrachten kunt aanbrengen, maar dat ze ernstige problemen kunnen veroorzaken als deze worden misbruikt.
Een betere optie is om een toegewezen cmdlet te gebruiken als er een bestaat om een actie uit te voeren. Gebruik bijvoorbeeld de Start-Service cmdlet om de Windows Time-service te starten.
Standaard worden, Start-Servicezoals de startmethode van Get-Service, geen resultaten geretourneerd.
Een van de voordelen van het gebruik van een cmdlet is echter dat het vaak extra mogelijkheden biedt die niet beschikbaar zijn met een methode.
In het volgende voorbeeld gebruikt u de parameter PassThru , waardoor een cmdlet die doorgaans geen uitvoer produceert, uitvoer genereert om uitvoer te genereren.
Omdat PowerShell niet aan UAC (User Access Control) deelneemt, moet u opdrachten uitvoeren waarvoor uitbreiding is vereist, zoals Start-Service, vanuit een PowerShell-sessie met verhoogde bevoegdheden.
Get-Service -Name w32time | Start-Service -PassThru
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time
Notitie
Wanneer u met PowerShell-cmdlets werkt, is het belangrijk om te voorkomen dat er veronderstellingen over hun uitvoer worden gemaakt.
Gebruik de Get-Process cmdlet om informatie op te halen over het PowerShell-proces dat wordt uitgevoerd op uw labomgevingscomputer.
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
Als u de beschikbare eigenschappen wilt bepalen, sluist Get-Process u naar Get-Member.
Get-Process -Name powershell | Get-Member
Wanneer u de Get-Process opdracht gebruikt, ziet u mogelijk dat sommige eigenschappen die standaard worden weergegeven ontbreken wanneer u de resultaten van Get-Member. Dit gedrag komt doordat verschillende waarden die standaard worden weergegeven, zoals NPM(K), PM(K), WS(K)en CPU(s), berekende eigenschappen zijn. U moet opdrachten doorsluisen om de werkelijke eigenschapsnamen te Get-Member bepalen.
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...
U kunt geen opdracht doorsluisen naar Get-Member die geen uitvoer genereert. Omdat Start-Service er niet standaard uitvoer wordt geproduceerd, wordt geprobeerd om deze te doorsluisen naar Get-Member een fout.
Start-Service -Name w32time | Get-Member
Notitie
Als u wilt doorsluisen naar Get-Member, moet een opdracht uitvoer op basis van objecten produceren.
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
Als u deze fout wilt voorkomen, geeft u de parameter PassThru op met Start-Service. Zoals eerder vermeld, veroorzaakt het toevoegen van de parameter PassThru een cmdlet die meestal geen uitvoer produceert om uitvoer te genereren.
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 is ontworpen om uitvoer rechtstreeks in de PowerShell-host weer te geven en produceert geen uitvoer op basis van objecten. Als gevolg hiervan kunt u de uitvoer niet doorsluisen naar Get-Member, waarvoor objectgebaseerde invoer is vereist.
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
Als u weet welk type object een opdracht produceert, kunt u zoeken naar opdrachten die dat type object als invoer accepteren.
Get-Command -ParameterType ServiceController
De volgende opdrachten accepteren een ServiceController-object via pijplijn- of parameterinvoer.
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
Notitie
Zoals vermeld in de hoofdstukvereisten, moet u ervoor zorgen dat RSAT is geïnstalleerd voor deze sectie. Daarnaast moet uw labomgevingcomputer lid zijn van uw active Directory-domein voor de labomgeving.
Als u de opdrachten wilt identificeren die zijn toegevoegd aan de ActiveDirectory PowerShell-module nadat u RSAT hebt geïnstalleerd, gebruikt Get-Command u deze in combinatie met de moduleparameter . In het volgende voorbeeld ziet u alle opdrachten die beschikbaar zijn in de ActiveDirectory-module .
Get-Command -Module ActiveDirectory
De ActiveDirectory PowerShell-module heeft in totaal 147 opdrachten toegevoegd.
Hebt u de naamconventie van deze opdrachten waargenomen? De zelfstandige naamwoorden in de opdrachtnamen worden voorafgegaan door AD om mogelijke naamconflicten met opdrachten in andere modules te voorkomen. Dit voorvoegsel is een veelvoorkomende procedure voor PowerShell-modules.
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
...
De cmdlet haalt standaard Get-ADUser een beperkte set eigenschappen voor gebruikersobjecten op en beperkt de uitvoer ervan tot de eerste 1000 gebruikers. Deze beperking is een optimalisatie van prestaties die is ontworpen om overweldigende Active Directory te voorkomen met overmatig ophalen van gegevens.
Get-ADUser -Identity mike | Get-Member -MemberType Properties
Zelfs als u alleen een basiskennis van Active Directory hebt, kunt u herkennen dat een gebruikersaccount meer eigenschappen heeft dan in het voorbeeld.
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;}
De Get-ADUser cmdlet bevat een parameter Properties om extra eigenschappen op te geven dan de standaardwaarden die u wilt ophalen. Als u alle eigenschappen wilt retourneren, gebruikt u het * jokerteken als parameterwaarde.
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...
De standaardconfiguratie voor het ophalen van eigenschappen van Active Directory-gebruikersaccounts is opzettelijk beperkt om prestatieproblemen te voorkomen. Als u elke eigenschap wilt retourneren voor elk gebruikersaccount in uw Active Directory-productieomgeving, kunnen de prestaties van uw domeincontrollers en het netwerk ernstig afnemen. Meestal hebt u alleen specifieke eigenschappen nodig voor bepaalde gebruikers. Het retourneren van alle eigenschappen voor één gebruiker is echter redelijk bij het identificeren van de beschikbare eigenschappen.
Het is niet ongebruikelijk dat u een opdracht meerdere keren uitvoert wanneer u deze prototypen maakt. Als u verwacht een resourceintensieve query uit te voeren bij het prototypen van een opdracht, kunt u overwegen deze eenmaal uit te voeren en de resultaten op te slaan in een variabele. Vervolgens kunt u efficiënter met de inhoud van de variabele werken dan herhaaldelijk een resource-intensieve query uitvoeren.
Met de volgende opdracht worden bijvoorbeeld alle eigenschappen voor een gebruikersaccount opgehaald en worden de resultaten opgeslagen in een variabele met de naam $Users. Werk met de inhoud van de $Users variabele in plaats van de opdracht meerdere keren uit te Get-ADUser voeren. Vergeet niet dat de inhoud van de variabele niet automatisch wordt bijgewerkt wanneer de gegevens van een gebruiker in Active Directory worden gewijzigd.
$Users = Get-ADUser -Identity mike -Properties *
U kunt de beschikbare eigenschappen verkennen door de $Users variabele door te ssluisen naar Get-Member.
$Users | Get-Member -MemberType Properties
Als u specifieke eigenschappen zoals Naam, LastLogonDate Met deze methode worden de gewenste eigenschappen en de bijbehorende waarden weergegeven op basis van de inhoud van de $Users variabele, waardoor er geen query's meer nodig zijn voor Active Directory. Het is een efficiëntere benadering dan het herhaaldelijk uitvoeren van de Get-ADUser opdracht.
$Users | Select-Object -Property Name, LastLogonDate, LastBadPasswordAttempt
Wanneer u een query uitvoert op Active Directory, filtert u de gegevens in de bron met behulp van de parameter Eigenschappen om Get-ADUser alleen de benodigde eigenschappen te retourneren.
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
Samenvatting
In dit hoofdstuk hebt u geleerd hoe u kunt bepalen welk type object een opdracht produceert, welke eigenschappen en methoden beschikbaar zijn voor een opdracht en hoe u kunt werken met opdrachten die de standaard geretourneerde eigenschappen beperken.
Beoordelen
- Welk type object produceert de
Get-Processcmdlet? - Hoe bepaalt u wat de beschikbare eigenschappen zijn voor een opdracht?
- Wat moet u controleren of er een opdracht bestaat om iets op te halen, maar niet om hetzelfde in te stellen?
- Hoe kunnen sommige opdrachten die standaard geen uitvoer retourneren, worden gemaakt om uitvoer te genereren?
- Wat moet u overwegen bij het maken van een prototype van een opdracht die een grote hoeveelheid uitvoer produceert?
Verwijzingen
- Get-Member
- Objectstructuur weergeven (Get-Member)
- about_Objects
- over_Eigenschappen
- about_Methods
- Geen PowerShell-cmdlet om iets te starten of te stoppen? Vergeet niet om te controleren op methoden in de get-cmdlets
Volgende stappen
In hoofdstuk 4 leert u meer over één regel en de pijplijn.