36 lines
1.2 KiB
PowerShell
36 lines
1.2 KiB
PowerShell
function Get-WindowsServiceApplicationName {
|
|
<#
|
|
.SYNOPSIS
|
|
Gets the full file path to a Windows service's application executable
|
|
#>
|
|
|
|
[CmdletBinding()]
|
|
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$serviceName
|
|
)
|
|
|
|
$logLead = (Get-LogLeadName)
|
|
|
|
Write-Host "$logLead : Querying WMI for ServiceInformation for $serviceName"
|
|
$serviceDetail = Get-CIMInstance win32_service -Filter "Name like '%$serviceName%'"
|
|
|
|
if ($null -eq $serviceDetail) {
|
|
|
|
Write-Warning "$logLead : Unable to find service detail for service with name $serviceName"
|
|
return $null
|
|
|
|
} elseif ($null -eq $serviceDetail.PathName) {
|
|
|
|
# This should never happen. Probably.
|
|
Write-Warning "$logLead : Unable to find the property PathName for service with name $serviceName"
|
|
return $null
|
|
} elseif ($serviceDetail.Count -gt 1) {
|
|
|
|
# This shouldn't happen either if you're using it right.
|
|
Write-Warning "$logLead : More than one service found using service name filter $serviceName. Check the input parameter!"
|
|
#return $null
|
|
}
|
|
|
|
return ($serviceDetail | Select-Object -First 1 | Select-Object -ExpandProperty PathName)
|
|
} |