Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
PowerShell je objektově orientovaný skriptovací jazyk. Představuje data a systémové stavy pomocí strukturovaných objektů odvozených z tříd .NET definovaných v rozhraní .NET Framework. Díky využití rozhraní .NET Framework nabízí PowerShell přístup k různým systémovým funkcím, včetně tříd systému souborů, registru a WMI (Windows Management Instrumentation). PowerShell má také přístup k knihovně tříd rozhraní .NET Framework, která obsahuje rozsáhlou kolekci tříd, které můžete použít k vývoji robustních skriptů PowerShellu.
V PowerShellu je každá položka nebo stav instancí objektu, který je možné prozkoumat a manipulovat s ním.
Rutina Get-Member
je jedním z primárních nástrojů, které PowerShell poskytuje ke zjišťování objektů, což odhalí charakteristiky objektu. V této kapitole se dozvíte, jak PowerShell využívá objekty a jak tyto objekty zjistit a manipulovat s nimi, aby se zjednodušily skripty a spravily systémy efektivněji.
Požadavky
Abyste mohli postupovat podle konkrétních příkladů v této kapitole, ujistěte se, že počítač testovacího prostředí je součástí domény služby Active Directory testovacího prostředí. Musíte také nainstalovat modul Active Directory PowerShellu, který je součástí nástrojů pro vzdálenou správu windows serveru (RSAT). Pokud používáte Windows 10 build 1809 nebo novější, včetně Windows 11, můžete nástroj RSAT nainstalovat jako funkci Windows.
Poznámka:
Služba Active Directory není podporována pro edice Windows Home.
- Informace o instalaci Nástrojů pro vzdálenou správu serverů naleznete v tématu Moduly pro správu systému Windows.
- Starší verze Windows najdete v tématu RSAT pro Windows.
Get-Member
Get-Member
poskytuje přehled o objektech, vlastnostech a metodách přidružených k příkazům PowerShellu. Můžete předat libovolný příkaz PowerShellu, který poskytuje výstup založený na objektech, do Get-Member
.
Když předáte výstup příkazu Get-Member
do , odhalí strukturu objektu vráceného příkazem, podrobně jeho vlastnosti a metody.
- Vlastnosti: Atributy objektu.
- Metody: Akce, které můžete provést u objektu.
Pro ilustraci tohoto konceptu zvažte licenci řidiče jako analogii. Stejně jako jakýkoli objekt má řidičský průkaz vlastnosti, jako je například barva očí, které obvykle zahrnují hodnoty blue
a brown
.
Naproti tomu metody představují akce, které můžete s objektem provádět. Odvolání je například metoda, kterou může oddělení motorových vozidel provádět na řidičské licenci.
Vlastnosti
Pokud chcete načíst podrobnosti o službě Windows Time ve vašem systému pomocí prostředí PowerShell, použijte rutinu Get-Service
.
Get-Service -Name w32time
Výsledky zahrnují vlastnosti Status, Name a DisplayName . Vlastnost Status označuje, že služba je Running
. Hodnota vlastnosti Name je w32time
a hodnota vlastnosti DisplayName je Windows Time
.
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time
Chcete-li zobrazit seznam všech dostupných vlastností a metod pro Get-Service
, převést jej na Get-Member
.
Get-Service -Name w32time | Get-Member
Výsledky ukazují, že první řádek obsahuje jednu významnou informaci. TypeName identifikuje typ vráceného objektu, který v tomto příkladu je System.ServiceProcess.ServiceController objekt. Tento název se v tomto příkladu často zkracuje na poslední část TypeName, například ServiceController.
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();
Všimněte si, že když předáte Get-Service
Get-Member
, existuje více vlastností, než je zobrazováno ve výchozím nastavení. I když se tyto další vlastnosti ve výchozím nastavení nezobrazují, můžete je vybrat propojením Select-Object
a použitím parametru Property . Následující příklad vybere všechny vlastnosti propojením výsledků z Get-Service
do Select-Object
a zadáním znaku zástupného znaku *
jako hodnoty parametru Property.
Get-Service -Name w32time | Select-Object -Property *
PowerShell ve výchozím nastavení vrátí čtyři vlastnosti jako tabulku a pět nebo více jako seznam. Některé příkazy však používají vlastní formátování k přepsání výchozího počtu vlastností zobrazených v tabulce.
K přepsání těchto výchozích hodnot můžete ručně použít Format-Table
a Format-List
.
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 :
Konkrétní vlastnosti lze také vybrat pomocí seznamu odděleného čárkami jako hodnotu parametru Property .
Get-Service -Name w32time |
Select-Object -Property Status, Name, DisplayName, ServiceType
Status Name DisplayName ServiceType
------ ---- ----------- -----------
Running w32time Windows Time Win32OwnProcess, Win32ShareProcess
Zástupné znaky můžete použít při zadávání názvů vlastností pomocí Select-Object
.
V následujícím příkladu použijte Can*
jako jednu z hodnot parametru Property vrátit všechny vlastnosti, které začínají Can
. Patří mezi ně CanPauseAndContinue, CanShutdown a CanStop.
Get-Service -Name w32time |
Select-Object -Property Status, DisplayName, Can*
Všimněte si, že jsou uvedené více vlastností, než se ve výchozím nastavení zobrazuje.
Status : Running
DisplayName : Windows Time
CanPauseAndContinue : False
CanShutdown : True
CanStop : True
Metody
Metody jsou akce, které můžete provést u objektu. Pomocí parametru MemberType zúžíte výsledky Get-Member
zobrazení pouze metod pro Get-Service
.
Get-Service -Name w32time | Get-Member -MemberType Method
Jak vidíte, existuje několik metod.
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...
K zastavení služby systému Windows můžete použít metodu Stop . Tento příkaz musíte spustit z relace PowerShellu se zvýšenými oprávněními.
(Get-Service -Name w32time).Stop()
Zadejte dotaz na stav služby Windows Time a ověřte, že je zastavený.
Get-Service -Name w32time
Status Name DisplayName
------ ---- -----------
Stopped w32time Windows Time
Metody můžete používat střídmě, ale měli byste o nich vědět. Někdy můžete najít Get-*
příkazy bez odpovídajícího Set-*
příkazu. Často můžete najít metodu Set-*
pro provedení akce v tomto scénáři. Cmdlet Get-SqlAgentJob
v modulu SqlServer PowerShell je skvělým příkladem. Neexistuje žádná odpovídající Set-*
rutina, ale stejnou úlohu můžete dokončit pomocí metody. Další informace o modulu SqlServer PowerShell a pokyny k instalaci najdete v přehledu PROSTŘEDÍ SQL Server PowerShell.
Další důvod, proč si uvědomit o metodách, je, že někteří uživatelé PowerShellu předpokládají, že nemůžete provádět destruktivní změny pomocí Get-*
příkazů, ale můžou ve skutečnosti způsobit závažné problémy, pokud je zneužito.
Lepší možností je použít vyhrazenou rutinu cmdlet, pokud existuje k provedení akce. Pomocí této rutiny Start-Service
můžete například spustit službu Windows Time.
Ve výchozím nastavení nevrací žádné výsledky, Start-Service
podobně jako metoda StartGet-Service
.
Jednou z výhod použití cmdletu je, že často poskytuje další možnosti, které nejsou dostupné pomocí metody.
V následujícím příkladu použijte parametr PassThru, který způsobí, že rutina, jež obvykle nevytváří výstup, nyní výstup vygeneruje.
Vzhledem k tomu, že se PowerShell neúčastní řízení uživatelských přístupů (UAC), musíte spustit příkazy, které vyžadují zvýšení oprávnění, například Start-Service
z relace PowerShellu se zvýšenými oprávněními.
Get-Service -Name w32time | Start-Service -PassThru
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time
Poznámka:
Při práci s rutinami PowerShellu je důležité se vyhnout předpokladům o jejich výstupu.
Pokud chcete načíst informace o procesu PowerShellu, který běží na vašem počítači v testovacím prostředí, použijte příkaz Get-Process
.
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
Chcete-li určit dostupné vlastnosti, přesměrujte Get-Process
do Get-Member
.
Get-Process -Name powershell | Get-Member
Při použití Get-Process
příkazu si můžete všimnout, že některé vlastnosti zobrazené ve výchozím nastavení chybí, když zobrazíte výsledky Get-Member
. Toto chování je způsobeno tím, že několik hodnot zobrazených ve výchozím nastavení, jako jsou například NPM(K)
, PM(K)
, WS(K)
, a CPU(s)
, jsou počítané vlastnosti. Musíte přesměrovat příkazy do Get-Member
, abyste určili jejich skutečné názvy vlastností.
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ůžete přesměrovat příkaz na Get-Member
, který nevytváří žádný výstup. Protože Start-Service
ve výchozím nastavení nevytváří výstup, pokus o jeho přesměrování na Get-Member
vede k chybě.
Start-Service -Name w32time | Get-Member
Poznámka:
Aby bylo možné příkaz předat do Get-Member
, musí produkovat výstup založený na objektech.
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
Chcete-li se této chybě vyhnout, zadejte parametr PassThru s parametrem Start-Service
. Jak jsme již zmínili, přidání parametru PassThru způsobí, že rutina, která obvykle nevytváří výstup, vytvoří výstup.
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
je navržený tak, aby zobrazoval výstup přímo v hostiteli PowerShellu a nevytvářel výstup založený na objektech. V důsledku toho nemůžete výstup převést na Get-Member
, což vyžaduje vstup založený na objektech.
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
Znalost typu objektu, který příkaz vytvoří, umožňuje hledat příkazy, které přijímají tento typ objektu jako vstup.
Get-Command -ParameterType ServiceController
Následující příkazy přijímají objekt ServiceController prostřednictvím vstupu kanálu nebo parametru.
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
Poznámka:
Jak je uvedeno v požadavcích kapitoly, ujistěte se, že máte pro tuto část nainstalovaný nástroj RSAT. Počítač testovacího prostředí musí být navíc členem domény Active Directory vašeho testovacího prostředí.
Chcete-li identifikovat příkazy přidané do modulu ActiveDirectory PowerShell po instalaci Get-Command
, použijte Get-Command
v kombinaci s parametrem Module. Následující příklad obsahuje seznam všech příkazů dostupných v modulu ActiveDirectory .
Get-Command -Module ActiveDirectory
Modul ActiveDirectory PowerShell přidal celkem 147 příkazů.
Všimli jste si konvence pojmenování těchto příkazů? Podstatná jména v názvech příkazů mají předponu AD , aby nedocházelo k potenciálním konfliktům názvů s příkazy v jiných modulech. Tento použití předpon je běžným postupem mezi moduly PowerShellu.
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
...
Podle výchozího nastavení cmdlet Get-ADUser
načítá omezenou sadu vlastností u uživatelských objektů a omezuje výstup na prvních 1 000 uživatelů. Toto omezení je optimalizace výkonu navržená tak, aby se zabránilo zahlcení služby Active Directory nadměrným načítáním dat.
Get-ADUser -Identity mike | Get-Member -MemberType Properties
I když máte základní znalosti o službě Active Directory, můžete si uvědomit, že uživatelský účet má více vlastností než ty, které jsou uvedené v příkladu.
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;}
Rutina Get-ADUser
obsahuje parametr Properties , který určuje další vlastnosti nad rámec výchozích hodnot, které chcete načíst. Chcete-li vrátit všechny vlastnosti, použijte *
zástupný znak jako hodnotu parametru.
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...
Výchozí konfigurace pro načítání vlastností uživatelského účtu služby Active Directory je záměrně omezená, aby nedocházelo k problémům s výkonem. Pokus o vrácení všech vlastností pro každý uživatelský účet v produkčním prostředí služby Active Directory může výrazně snížit výkon řadičů domény a sítě. Obvykle potřebujete jenom konkrétní vlastnosti pro určité uživatele. Vrácení všech vlastností pro jednoho uživatele je však přiměřené při identifikaci dostupných vlastností.
Při vytváření prototypů není neobvyklé spustit příkaz několikrát. Pokud očekáváte spuštění dotazu náročného na prostředky při vytváření prototypů příkazu, zvažte jeho provedení jednou a uložení výsledků do proměnné. Pak můžete pracovat s obsahem proměnné efektivněji než opakovaně s dotazem náročným na prostředky.
Například následující příkaz načte všechny vlastnosti uživatelského účtu a uloží výsledky do proměnné s názvem $Users
. Pracujte s obsahem $Users
proměnné namísto vícenásobného Get-ADUser
spuštění příkazu. Mějte na paměti, že obsah proměnné se neaktualizuje automaticky, když se informace uživatele změní ve službě Active Directory.
$Users = Get-ADUser -Identity mike -Properties *
Dostupné vlastnosti můžete prozkoumat přesměrováním proměnné $Users
do Get-Member
.
$Users | Get-Member -MemberType Properties
Chcete-li zobrazit konkrétní vlastnosti, jako Název, LastLogonDate a LastBadPasswordAttempt, předejte proměnnou $Users
do Select-Object
. Tato metoda zobrazí požadované vlastnosti a jejich hodnoty na základě obsahu $Users
proměnné a eliminuje potřebu více dotazů do služby Active Directory. Jedná se o efektivnější přístup než opakované spuštění Get-ADUser
příkazu.
$Users | Select-Object -Property Name, LastLogonDate, LastBadPasswordAttempt
Při dotazování služby Active Directory vyfiltrujte data ve zdroji pomocí parametru Vlastnosti , aby Get-ADUser
se vrátily pouze nezbytné vlastnosti.
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
Shrnutí
V této kapitole jste se dozvěděli, jak určit, jaký typ objektu příkaz vytvoří, jaké vlastnosti a metody jsou k dispozici pro příkazy a jak pracovat s příkazy, které omezují vlastnosti vrácené ve výchozím nastavení.
Přehled
- Jaký typ objektu rutina
Get-Process
vytvoří? - Jak zjistíte, jaké jsou dostupné vlastnosti pro příkaz?
- Co byste měli zkontrolovat, zda existuje příkaz k získání něčeho, ale ne k nastavení stejného?
- Jak lze některé příkazy, které standardně nevrací žádný výstup, přimět, aby generovaly výstup?
- Co byste měli zvážit při vytváření prototypů příkazu, který vytváří velký objem výstupu?
Reference
- Get-Member
- Zobrazení struktury objektu (Get-Member)
- about_Objects
- o_vlastnostech
- about_Methods
- Chybí vám cmdlet PowerShell, který by něco spustil nebo zastavil? Nezapomeňte zkontrolovat metody v rutinách Get
Další kroky
V další kapitole se seznámíte s krátkými výrazy a potrubím.