Question

On dirait que cela devrait être simple, mais powershell gagne une autre bataille avec moi. Il suffit de vouloir produire le nom de tous les services en cours d'exécution sur un système, et leur chemin exécutable, et conduit en quelque chose que je peux utiliser pour y effectuer des recherches comme moins.

Jusqu'à présent je:

$services = get-WmiObject -query 'select * from win32_service'
foreach($service in $services){$service.Name $service.Pathname} | less

Mais c'est de me donner le « Un élément de conduite ne peut être vide. » que je semble avoir trouver beaucoup. Tout le monde me dire comment résoudre ce problème, que ce soit en produisant un fichier et Ill passer par avec vim ou d'une pipe à la page / moins / etc je peux faire de balayage rapide (avec mes yeux ne programically encore tout à fait).

Était-ce utile?

La solution

Essayez de faire ce qui suit

$services | %{ $_.Pathname } | less

EDIT Ajouter multiple au chemin

$services | %{ "{0} {1}" -f $_.Pathname,$_.Name } | less

Autres conseils

Si vous utilisez PowerShell 2.0, vous pouvez comme ceci:

gwmi win32_service | select-object Name,PathName | ogv

ogv (Output-GridView) est une nouvelle applet de commande à 2,0.

get-wmiobject win32_service | select-object name, pathname | more

Ceci est également 2.0 et Powershell la fin du commentaire ci-dessus. Vous venez essayer d'utiliser un foreach lorsque vous ne l'avez pas besoin dans ce cas.

Même avec le foreach, vous étiez près d'obtenir une sortie, vous pouvez travailler avec. Une virgule dans votre foreach aurait généré une sortie comme une liste et vous auriez pu utiliser plus de commande au lieu de moins.

$services = get-WmiObject -query 'select * from win32_service'
foreach($service in $services){$service.Name  $service.Pathname} | more

Voici une autre façon d'écrire cette même déclaration.

get-WmiObject win32_service | foreach {$ .Nom, $ .Pathname} | plus

Ceci est toujours pas la même chose que mon premier exemple, mais je voulais vous montrer comment vous étiez proche.

On dirait une bonne raison d'utiliser foreach-objet:

$services = get-WmiObject -query 'select * from win32_service'
$services|ForEach-Object {$_|Select-Object Name,Pathname}|less

S'il vous plaît excusez-moi pendant que j'ONELINE il:

get-WmiObject -query 'select * from win32_service' |ForEach-Object {$_|Select-Object Name,Pathname}|less

foreach-objet retourne un objet dans le pipeline sur la base de l'objet d'entrée.

Je suppose moins est un alias de votre propre fabrication puisque je ne semble pas avoir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top