Search code examples
powershellservicepowershell-2.0powershell-3.0

How can I extract "Path to executable" of all services with PowerShell


Get-Service *sql* | sort DisplayName | out-file c:/servicelist.txt

I have a one line PowerShell script to extract list of all services running on my local machine, now, in addition to displaying "Status", "Name" and "DisplayName" I also want to display "Path to executable"


Solution

  • I think you'll need to resort to WMI:

    Get-WmiObject win32_service | ?{$_.Name -like '*sql*'} | select Name, DisplayName, State, PathName
    

    Update If you want to perform some manipulation on the selected data, you can use calculated properties as described here.

    For example if you just wanted the text within quotes for the Pathname, you could split on double quotes and take the array item 1:

    Get-WmiObject win32_service | ?{$_.Name -like '*sql*'} | select Name, DisplayName, @{Name="Path"; Expression={$_.PathName.split('"')[1]}} | Format-List
    

    Get-CimInstance can also be used to achieve the same, see here for the difference between CIM and WMI.

    Get-CimInstance win32_service | ?{$_.Name -like '*sql*'} | select Name, DisplayName, @{Name="Path"; Expression={$_.PathName.split('"')[1]}} | Format-List