2008-12-05 5 views
4

Je l'ai fait dans le passé, et ne peut pas se souvenir de la commande correcte (je pense que j'utilisais instring ou soemthign?)services de filtrage lors de l'appel Get-Service

Je veux la liste de tous les services Windows en cours d'exécution qui avoir le mot «sql» en eux.

Liste tous les services Windows est:

Get-Service 

Y at-il une fonction de instring qui fait cela?

Répondre

15
Get-Service -Name *sql* 

Une alternative serait plus:

Get-Service | where-object {$_.name -like '*sql*'} 

Beaucoup offrent cmdlets construit en wildcards de filtrage et de soutien. Si vous cochez les fichiers d'aide (Get-Help Get-Service -full), vous verrez

-name <string[]> 
    Specifies the service names of services to be retrieved. Wildcards are 
    permitted. By default, Get-Service gets all of the services on the comp 
    uter. 

    Required?     false 
    Position?     1 
    Default value    * 
    Accept pipeline input?  true (ByValue, ByPropertyName) 
    Accept wildcard characters? true 

Habituellement, si le filtrage est intégré à l'applet de commande, qui est le meilleur moyen d'aller, car il est souvent plus rapide et plus efficace.
Dans ce cas, il n'y a peut-être pas beaucoup d'avantages en termes de performances, mais dans V2, où vous pourriez tirer les services d'un ordinateur distant et filtrer, il y aurait la méthode préférée (moins de données à renvoyer à l'ordinateur appelant) .

4

Vous pouvez obtenir tous les services en cours d'exécution et avoir des mots sql.

Get-Service | Where-Object {$_.Status -eq "Running"} | Where-Object {$_.Name -like "*sql*"} 

Si vous voulez plus d'informations, voir ce (pas beaucoup de différence) http://nisanthkv.blog.com/2012/06/29/get-services-using-powershell

Hope it helps ...

2

S'il vous plaît entrer ci-dessous commande:

Get-Service -Name '*<search string>*'