2017-07-25 3 views
1

Je suis en train d'apprendre PowerShell (v5 pour être exact) et je ne semble pas suivre la logique derrière les propriétés de l'objet et les paramètres.Powershell - Pourquoi certaines propriétés ont des paramètres liés

Si nous prenons:

Get-Service | gm 

Nous pouvons voir qu'il ya un "Nom" AliasProperty:

Name      AliasProperty Name = ServiceName 

Mais nous avons aussi (confusément) ont un paramètre appelé "-Name" qui permet de filtrer sur un prénom

Par exemple:

Je peux accéder à la propriété du nom en faisant:

(Get-Service).name 

et probablement filtrer en canalisant il.

Mais je peux aussi faire

Get-Service -Name "filter" 

Ma première question serait, est la propriété liée au paramètre? Le paramètre est-il juste donné comme un raccourci utile lié au filtrage sur la propriété "name"?

Deuxièmement, je voudrais demander pourquoi il n'y a pas de paramètre correspondant pour chaque propriété. Par exemple:

(Get-Service).servicetype 

n'a pas un paramètre correspondant:

Get-Service -ServiceType 

Merci.

Répondre

0
  1. pas vraiment. C'est juste un moyen significatif de nommer un paramètre.
  2. pourquoi voudriez-vous cela? vous pouvez filtrer à l'aide de la cmdlet select-object.

Les paramètres sont principalement nommés en utilisant une approche logique. donc si vous êtes à la recherche d'un processus appelé bloc-notes que vous feriez

Get-Process -Name notepad 

C'est l'idée (un des) derrière Powershell, de sorte que son intuitive.
exemple Select-Object:

Get-Service | Select-Object Name, ServiceType 
2
  1. No. Les paramètres sont des arguments acceptés par Cmdlets. Les propriétés sont des choses qui appartiennent à un objet (entrée/sortie par une applet de commande)

  2. Vous pouvez utiliser Where-Object être plus sélectif basé sur la propriété valeurs ou Select-Object basés sur la propriété noms.


# Filter based on ServiceType 
Get-Service | Where-Object ServiceType -eq Win32ShareProcess 

# Filter based on ServiceType... but return only the name 
Get-Service | Where-Object ServiceType -eq Win32ShareProcess | Select-Object Name 
0

Get-Service est une applet de commande pour retourner les services sur un ordinateur. Il renvoie un objet du type System.ServiceProcess.ServiceController.

Cette notation:

(Get-Service).Name 

retourne juste la propriété Name de tout objet est retourné par la commande au sein de vos parens, et n'a vraiment rien à voir avec la commande Get-service en lui-même. Toute commande entraînant un ou plusieurs objets avec un paramètre Name vous donnera une sortie. Cela pourrait même être différents types d'objets comme celui-ci:

((get-process -name "winlogon"), (Get-Service -name "wuauserv")).Name 

winlogon 
wuauserv 

Une applet de commande pour travailler avec un type particulier d'objet partagera souvent les noms de paramètres avec que les propriétés des objets. Cependant, toutes les propriétés de l'objet ne possèdent pas les paramètres correspondants, mais seulement les plus couramment utilisés.

Le paramètre est-il simplement donné comme un raccourci utile lié au tri de la propriété "name"?

Plus comme dans l'autre sens. Le filtrage avec le paramètre name est la façon «véritable» d'obtenir les services que vous voulez. Les cmdlets sont là pour que vous n'ayez pas à fouiller avec les propriétés des objets .NET directement.