Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
PowerShell est un langage de script orienté objet. Il représente les données et les états système à l’aide d’objets structurés dérivés de classes .NET définies dans le .NET Framework. En tirant parti du .NET Framework, PowerShell offre un accès à différentes fonctionnalités système, notamment le système de fichiers, le Registre et les classes WMI (Windows Management Instrumentation). PowerShell a également accès à la bibliothèque de classes .NET Framework, qui contient une vaste collection de classes que vous pouvez utiliser pour développer des scripts PowerShell robustes.
Dans PowerShell, chaque élément ou état est une instance d’un objet qui peut être exploré et manipulé.
L’applet Get-Member
de commande est l’un des outils principaux fournis par PowerShell pour la découverte d’objets, qui révèle les caractéristiques d’un objet. Ce chapitre explique comment PowerShell tire parti des objets et comment vous pouvez découvrir et manipuler ces objets pour simplifier vos scripts et gérer vos systèmes plus efficacement.
Prérequis
Pour suivre les exemples spécifiques de ce chapitre, assurez-vous que votre ordinateur d’environnement lab fait partie de votre domaine Active Directory de votre environnement lab. Vous devez également installer le module PowerShell Active Directory fourni avec les outils d’administration de serveur distant Windows (RSAT). Si vous utilisez Windows 10 build 1809 ou version ultérieure, y compris Windows 11, vous pouvez installer RSAT en tant que fonctionnalité Windows.
Remarque
Active Directory n’est pas pris en charge pour les éditions Windows Home.
- Pour plus d’informations sur l’installation de RSAT, consultez les modules de gestion Windows.
- Pour les versions antérieures de Windows, consultez RSAT pour Windows.
Get-Member
Get-Member
fournit des insights sur les objets, les propriétés et les méthodes associés aux commandes PowerShell. Vous pouvez diriger n’importe quelle commande PowerShell qui produit une sortie basée sur des objets vers Get-Member
.
Lorsque vous dirigez la sortie d’une commande Get-Member
vers , elle révèle la structure de l’objet retourné par la commande, en détaillant ses propriétés et méthodes.
- Propriétés : attributs d’un objet.
- Méthodes : actions que vous pouvez effectuer sur un objet.
Pour illustrer ce concept, considérez le permis de conduire comme une analogie. Comme n’importe quel objet, la licence d’un pilote a des propriétés, telles que la couleur des yeux, qui inclut et blue
des brown
valeurs généralement.
En revanche, les méthodes représentent des actions que vous pouvez effectuer sur l’objet. Par exemple, Revoke est une méthode que le ministère des véhicules automobiles peut effectuer sur le permis de conduire.
Propriétés
Pour récupérer des détails sur le service de temps Windows sur votre système à l’aide de PowerShell, utilisez l’applet de Get-Service
commande.
Get-Service -Name w32time
Les résultats incluent les propriétés Status, Name et DisplayName . La propriété Status indique que le service est Running
. La valeur de la propriété Name est w32time
, et la valeur de la propriété DisplayName est Windows Time
.
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time
Pour répertorier toutes les propriétés et méthodes disponibles pour Get-Service
, dirigez-le vers Get-Member
.
Get-Service -Name w32time | Get-Member
Les résultats montrent que la première ligne contient une information significative. TypeName identifie le type d’objet retourné, qui dans cet exemple est un objet System.ServiceProcess.ServiceController . Ce nom est souvent abrégé en dernière partie du TypeName, tel que ServiceController, dans cet exemple.
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();
Notez que lorsque vous êtes redirigé Get-Service
vers Get-Member
, il existe plus de propriétés que celles affichées par défaut. Bien que ces propriétés supplémentaires ne soient pas affichées par défaut, vous pouvez les sélectionner en les pipant et en Select-Object
utilisant le paramètre Property . L’exemple suivant sélectionne toutes les propriétés en pipant les résultats du Get-Service
Select-Object
caractère générique et en spécifiant le *
caractère générique comme valeur pour le paramètre Property.
Get-Service -Name w32time | Select-Object -Property *
Par défaut, PowerShell retourne quatre propriétés sous forme de table et cinq ou plus sous forme de liste. Toutefois, certaines commandes appliquent une mise en forme personnalisée pour remplacer le nombre par défaut de propriétés affichées dans un tableau.
Vous pouvez utiliser Format-Table
et Format-List
remplacer ces valeurs par défaut manuellement.
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 :
Des propriétés spécifiques peuvent également être sélectionnées à l’aide d’une liste séparée par des virgules comme valeur du paramètre Property .
Get-Service -Name w32time |
Select-Object -Property Status, Name, DisplayName, ServiceType
Status Name DisplayName ServiceType
------ ---- ----------- -----------
Running w32time Windows Time Win32OwnProcess, Win32ShareProcess
Vous pouvez utiliser des caractères génériques lors de la spécification de noms de propriétés avec Select-Object
.
Dans l’exemple suivant, utilisez Can*
l’une des valeurs du paramètre Property pour renvoyer toutes les propriétés qui commencent par Can
. Il s’agissait notamment de CanPauseAndContinue, CanShutdownet CanStop.
Get-Service -Name w32time |
Select-Object -Property Status, DisplayName, Can*
Notez qu’il existe plus de propriétés répertoriées que celles affichées par défaut.
Status : Running
DisplayName : Windows Time
CanPauseAndContinue : False
CanShutdown : True
CanStop : True
Méthodes
Les méthodes sont des actions que vous pouvez effectuer sur un objet. Utilisez le paramètre MemberType pour affiner les résultats de l’affichage Get-Member
uniquement des méthodes pour Get-Service
.
Get-Service -Name w32time | Get-Member -MemberType Method
Comme vous pouvez le voir, il existe plusieurs méthodes.
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...
Vous pouvez utiliser la méthode Stop pour arrêter un service Windows. Vous devez exécuter cette commande à partir d’une session PowerShell avec élévation de privilèges.
(Get-Service -Name w32time).Stop()
Interrogez l’état du service de temps Windows pour confirmer qu’il est arrêté.
Get-Service -Name w32time
Status Name DisplayName
------ ---- -----------
Stopped w32time Windows Time
Vous pouvez utiliser des méthodes avec parcimonie, mais vous devriez les connaître. Parfois, vous trouvez Get-*
des commandes sans commande correspondante Set-*
. Souvent, vous pouvez trouver une méthode pour effectuer une Set-*
action dans ce scénario. L’applet Get-SqlAgentJob
de commande dans le module SqlServer PowerShell est un excellent exemple. Aucune applet de commande correspondante Set-*
n’existe, mais vous pouvez utiliser une méthode pour effectuer la même tâche. Pour plus d’informations sur le module SqlServer PowerShell et les instructions d’installation, consultez la vue d’ensemble de SQL Server PowerShell.
Une autre raison de connaître les méthodes est que certains utilisateurs PowerShell supposent que vous ne pouvez pas apporter de modifications destructrices avec Get-*
des commandes, mais qu’ils peuvent réellement causer des problèmes graves si l’utilisation incorrecte est utilisée.
Une meilleure option consiste à utiliser une applet de commande dédiée si elle existe pour effectuer une action. Par exemple, utilisez l’applet Start-Service
de commande pour démarrer le service de temps Windows.
Par défaut, Start-Service
comme la méthode Start de Get-Service
, ne retourne aucun résultat.
Toutefois, l’un des avantages de l’utilisation d’une applet de commande est qu’il fournit souvent des fonctionnalités supplémentaires qui ne sont pas disponibles avec une méthode.
Dans l’exemple suivant, utilisez le paramètre PassThru , ce qui provoque une applet de commande qui ne produit généralement pas de sortie pour générer la sortie.
Étant donné que PowerShell ne participe pas au contrôle d’accès utilisateur (UAC), vous devez exécuter des commandes qui nécessitent une élévation, par Start-Service
exemple, à partir d’une session PowerShell avec élévation de privilèges.
Get-Service -Name w32time | Start-Service -PassThru
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time
Remarque
Lorsque vous utilisez des applets de commande PowerShell, il est important d’éviter de faire des hypothèses sur leur sortie.
Pour récupérer des informations sur le processus PowerShell en cours d’exécution sur votre ordinateur d’environnement lab, utilisez l’applet de Get-Process
commande.
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
Pour déterminer les propriétés disponibles, dirigez Get-Process
vers Get-Member
.
Get-Process -Name powershell | Get-Member
Lorsque vous utilisez la Get-Process
commande, vous remarquerez peut-être que certaines propriétés affichées par défaut sont manquantes lorsque vous affichez les résultats de Get-Member
. Ce comportement est dû à plusieurs des valeurs affichées par défaut, telles que NPM(K)
, , PM(K)
WS(K)
, et , et CPU(s)
, sont des propriétés calculées. Vous devez diriger les commandes pour Get-Member
déterminer leurs noms de propriétés réels.
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...
Vous ne pouvez pas diriger une commande vers Get-Member
ce qui ne génère pas de sortie. Étant donné que Start-Service
ne produit pas de sortie par défaut, la tentative de canaliser celui-ci Get-Member
entraîne une erreur.
Start-Service -Name w32time | Get-Member
Remarque
Pour être redirigée vers Get-Member
, une commande doit produire une sortie basée sur un objet.
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
Pour éviter cette erreur, spécifiez le paramètre PassThru avec Start-Service
. Comme mentionné précédemment, l’ajout du paramètre PassThru provoque une applet de commande qui ne produit généralement pas de sortie pour générer la sortie.
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
est conçu pour afficher la sortie directement dans l’hôte PowerShell et ne produit pas de sortie basée sur des objets. Par conséquent, vous ne pouvez pas diriger sa sortie vers Get-Member
, ce qui nécessite une entrée basée sur l’objet.
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
Le fait de connaître le type d’objet qu’une commande produit vous permet de rechercher des commandes qui acceptent ce type d’objet comme entrée.
Get-Command -ParameterType ServiceController
Les commandes suivantes acceptent un objet ServiceController via une entrée de pipeline ou de paramètre.
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
Remarque
Comme indiqué dans les conditions préalables au chapitre, vérifiez que vous avez installé RSAT pour cette section. En outre, votre ordinateur d’environnement lab doit être membre du domaine Active Directory de votre environnement lab.
Pour identifier les commandes ajoutées au module PowerShell ActiveDirectory après avoir installé RSAT, utilisez Get-Command
combinées avec le paramètre Module . L’exemple suivant répertorie toutes les commandes disponibles dans le module ActiveDirectory .
Get-Command -Module ActiveDirectory
Le module ActiveDirectory PowerShell a ajouté un total de 147 commandes.
Avez-vous observé la convention d’affectation de noms de ces commandes ? Les noms des noms des commandes sont préfixés avec AD pour éviter les conflits potentiels de noms avec les commandes d’autres modules. Ce préfixe est une pratique courante parmi les modules PowerShell.
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
...
Par défaut, l’applet Get-ADUser
de commande récupère un ensemble limité de propriétés pour les objets utilisateur et limite sa sortie aux 1 000 premiers utilisateurs. Cette contrainte est une optimisation des performances conçue pour éviter de surcharger Active Directory avec une récupération excessive des données.
Get-ADUser -Identity mike | Get-Member -MemberType Properties
Même si vous avez seulement une compréhension de base d’Active Directory, vous pouvez reconnaître qu’un compte d’utilisateur a plus de propriétés que celles indiquées dans l’exemple.
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;}
L’applet Get-ADUser
de commande inclut un paramètre Properties pour spécifier des propriétés supplémentaires au-delà des valeurs par défaut que vous souhaitez récupérer. Pour retourner toutes les propriétés, utilisez le *
caractère générique comme valeur de paramètre.
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...
La configuration par défaut pour la récupération des propriétés du compte d’utilisateur Active Directory est intentionnellement limitée pour éviter les problèmes de performances. La tentative de retourner chaque propriété pour chaque compte d’utilisateur dans votre environnement Active Directory de production peut dégrader gravement les performances de vos contrôleurs de domaine et de votre réseau. En règle générale, vous avez uniquement besoin de propriétés spécifiques pour certains utilisateurs. Toutefois, le renvoi de toutes les propriétés d’un seul utilisateur est raisonnable lors de l’identification des propriétés disponibles.
Il n’est pas rare d’exécuter une commande plusieurs fois lors du prototypage. Si vous prévoyez d’exécuter une requête gourmande en ressources lors du prototypage d’une commande, envisagez de l’exécuter une fois et de stocker les résultats dans une variable. Ensuite, vous pouvez utiliser le contenu de la variable plus efficacement que l’exécution répétée d’une requête gourmande en ressources.
Par exemple, la commande suivante récupère toutes les propriétés d’un compte d’utilisateur et stocke les résultats dans une variable nommée $Users
. Utilisez le contenu de la $Users
variable au lieu d’exécuter la Get-ADUser
commande plusieurs fois. N’oubliez pas que le contenu de la variable ne se met pas à jour automatiquement quand les informations d’un utilisateur changent dans Active Directory.
$Users = Get-ADUser -Identity mike -Properties *
Vous pouvez explorer les propriétés disponibles en pipant la $Users
variable vers Get-Member
.
$Users | Get-Member -MemberType Properties
Pour afficher des propriétés spécifiques telles que Name, LastLogonDate Cette méthode affiche les propriétés souhaitées et leurs valeurs en fonction du contenu de la $Users
variable, éliminant ainsi la nécessité de plusieurs requêtes vers Active Directory. Il s’agit d’une approche plus efficace en matière de ressources que l’exécution répétée de la Get-ADUser
commande.
$Users | Select-Object -Property Name, LastLogonDate, LastBadPasswordAttempt
Lorsque vous interrogez Active Directory, filtrez les données à la source à l’aide du paramètre Propriétés pour Get-ADUser
renvoyer uniquement les propriétés nécessaires.
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
Résumé
Dans ce chapitre, vous avez appris à déterminer le type d’objet qu’une commande produit, quelles propriétés et méthodes sont disponibles pour une commande et comment utiliser des commandes qui limitent les propriétés retournées par défaut.
Révision
- Quel type d’objet est généré par l’applet de commande
Get-Process
? - Comment connaître les propriétés qui sont disponibles pour une commande ?
- Que devez-vous vérifier si une commande existe pour obtenir quelque chose, mais pas pour définir la même chose ?
- Comment certaines commandes qui ne retournent pas de sortie par défaut doivent-elles être générées pour générer la sortie ?
- Que devez-vous envisager de faire lors du prototypage d’une commande qui produit une grande quantité de sortie ?
Références
- Get-Member
- Affichage de la structure des objets (Get-Member)
- about_Objects
- à propos de Propriétés
- À propos des méthodes
- Vous n’avez pas d’applet de commande PowerShell pour démarrer ou arrêter quelque chose ? N’oubliez pas de rechercher des méthodes sur les applets de commande Get
Étapes suivantes
Dans le chapitre suivant, vous allez découvrir les lignes un et le pipeline.