2012-09-25 24 views
7

Necesito obtener rutas de ejecución física de todos los servicios de Windows en un conjunto de servidores, que se ejecutan en Win 2k8. Como, la versión de powershell que se incluye con este SO es 2.0, quería usar el comando Get-service en lugar de Get-WmiObject. Sé que puedo tirar de la ruta física usando la orden dada a continuaciónCómo extraer la ruta física de un servicio de Windows utilizando el comando Get-Service

$QueryApp = "Select * from Win32_Service Where Name='AxInstSV'" 
$Path = (Get-WmiObject -ComputerName MyServer -Query $QueryApp).PathName 

Yo nose quiere este comando para tirar de la ruta física, pero quería utilizar el comando Get-Service que viene con la versión 2.0 PS.

Cualquier ayuda sería muy apreciada.

Respuesta

10

Incluso con PowerShell 3, no veo la manera de obtenerlo con Get-Service.

Esta 1-liner le dará el nombre de ruta, aunque con un poco menos de la preferida "filtro izquierdo" comportamiento:

gwmi win32_service|?{$_.name -eq "AxInstSV"}|select pathname 

O, si desea que sólo la propia cadena:

(gwmi win32_service|?{$_.name -eq "AxInstSV"}).pathname 
+0

Ese código .NET está haciendo exactamente lo que está haciendo este código de PowerShell, solo que con más detalle. – alroc

2

Quería hacer algo similar, pero basándome en la búsqueda/coincidencia de la ruta del proceso que se ejecuta bajo el servicio, así que utilicé la sintaxis clásica WMI Query, luego pasé los resultados a través de la tabla de formato:

$pathWildSearch = "orton"; 
gwmi -Query "select * from win32_service where pathname like '%$pathWildSearch%' and state='Running'" | Format-Table -Property Name, State, PathName -AutoSize -Wrap 

Le invitamos a convertir esto en un trazador de líneas omitiendo la definición y pasando $ pathWildSearch, o puede simplemente respaldar la declaración de gwmi para continuar después del punto y coma.

0

Tal vez poco menos prolijo,

wmic service where "name='AxInstSV'" get PathName 

Esto debería funcionar en símbolo del sistema, así, no sólo PowerShell.


O bien si tiene en sí el nombre del proceso que podría hacer:

wmic process where "name='AxInstSV.exe'" get ExecutablePath 

Para leer trayectoria de proceso que se necesita el permiso, así que la mayoría tengo más suerte con el nombre del servicio.

Cuestiones relacionadas