Subscribe to ShellGeek!PowerShell Test-Path cmdlet check if file exists or not. If file exists, it will return $True and $False if the file doesn't exist on a specified path. PowerShell Remove-Item cmdlet is used to delete the file if exists from the specified path by the $FileName variable.
You can use the Get-Service cmdlet to get the status of services not only on the local but also on remote computers. To do this, use the –ComputerName parameter. You can use the NetBIOS, FQDN name, or an IP address as a computer name.
You can use WMI or other tools for this since there is no Remove-Service
cmdlet until Powershell 6.0 (See Remove-Service doc)
For example:
$service = Get-WmiObject -Class Win32_Service -Filter "Name='servicename'"
$service.delete()
Or with the sc.exe
tool:
sc.exe delete ServiceName
Finally, if you do have access to PowerShell 6.0:
Remove-Service -Name ServiceName
There's no harm in using the right tool for the job, I find running (from Powershell)
sc.exe \\server delete "MyService"
the most reliable method that does not have many dependencies.
If you just want to check service existence:
if (Get-Service "My Service" -ErrorAction SilentlyContinue)
{
"service exists"
}
I used the "-ErrorAction SilentlyContinue" solution but then later ran into the problem that it leaves an ErrorRecord behind. So here's another solution to just checking if the Service exists using "Get-Service".
# Determines if a Service exists with a name as defined in $ServiceName.
# Returns a boolean $True or $False.
Function ServiceExists([string] $ServiceName) {
[bool] $Return = $False
# If you use just "Get-Service $ServiceName", it will return an error if
# the service didn't exist. Trick Get-Service to return an array of
# Services, but only if the name exactly matches the $ServiceName.
# This way you can test if the array is emply.
if ( Get-Service "$ServiceName*" -Include $ServiceName ) {
$Return = $True
}
Return $Return
}
[bool] $thisServiceExists = ServiceExists "A Service Name"
$thisServiceExists
But ravikanth has the best solution since the Get-WmiObject will not throw an error if the Service didn't exist. So I settled on using:
Function ServiceExists([string] $ServiceName) {
[bool] $Return = $False
if ( Get-WmiObject -Class Win32_Service -Filter "Name='$ServiceName'" ) {
$Return = $True
}
Return $Return
}
So to offer a more complete solution:
# Deletes a Service with a name as defined in $ServiceName.
# Returns a boolean $True or $False. $True if the Service didn't exist or was
# successfully deleted after execution.
Function DeleteService([string] $ServiceName) {
[bool] $Return = $False
$Service = Get-WmiObject -Class Win32_Service -Filter "Name='$ServiceName'"
if ( $Service ) {
$Service.Delete()
if ( -Not ( ServiceExists $ServiceName ) ) {
$Return = $True
}
} else {
$Return = $True
}
Return $Return
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With