Domanda

Sembra che questo deve essere semplice, ma PowerShell sta vincendo un'altra battaglia con me. Basta voler uscita il nome di tutti i servizi in esecuzione su un sistema, e il loro percorso dell'eseguibile, e tubo che in qualcosa che posso usare per la ricerca in essa come meno.

Finora ho:

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

Ma questo è dandomi la "Un elemento di tubo vuoto non è permesso." che mi sembra di aver messo a punto un sacco. Qualcuno mi dica come risolvere questo, sia per l'output su un file e Ill passare attraverso di essa con vim, o tubo alla pagina / / scansione rapida di meno, ecc in modo che io possa fare (con i miei occhi non programically ancora del tutto).

È stato utile?

Soluzione

Prova a fare il seguente

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

Modifica Aggiungi più al percorso

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

Altri suggerimenti

Se si utilizza PowerShell 2.0, si potrebbe in questo modo:

gwmi win32_service | select-object Name,PathName | ogv

ogv (Output-GridView) è un nuovo cmdlet in 2.0.

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

Questo è anche PowerShell 2.0 ed è il vicino al commento di cui sopra. Stavi solo cercando di usare un foreach quando non hai bisogno di in questo caso.

Anche con il foreach, eri vicino ad ottenere un output si poteva lavorare. Una virgola nella tua foreach avrebbe generato un output come un elenco e si avrebbe potuto usare il comando more, invece di meno.

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

Ecco un altro modo per dare questa stessa dichiarazione.

Win32_Service

get-WmiObject | foreach {$ .Name, $ .Pathname} | più

Questa non è ancora la stessa come il mio primo esempio, ma ho voluto mostrare come vicino eri.

appare come una buona ragione per usare foreach-oggetto:

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

Vi prego di scusarmi, mentre io oneline che:

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

foreach-oggetto restituirà un oggetto nella pipeline in base all'oggetto di ingresso.

Sto assumendo meno è un alias del proprio fare dato che non sembrano avere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top