-
Notifications
You must be signed in to change notification settings - Fork 0
/
UninstallWinService.ps1
50 lines (43 loc) · 1.34 KB
/
UninstallWinService.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
param
(
[string]$serverName,
[Parameter(Mandatory = $true)]
[string]$serviceName
)
Write-Output "Checking for existing service..."
if($serverName -eq "")
{
$service = Get-WmiObject -Namespace "root\cimv2" -Class "Win32_Service" `
-Filter "Name='$serviceName'" -Impersonation 3
}
else
{
$service = Get-WmiObject -Namespace "root\cimv2" -Class "Win32_Service" `
-ComputerName $serverName -Filter "Name='$serviceName'" -Impersonation 3
}
if(!$service)
{
Write-Warning "Service $serviceName does not found on $serverName. Nothing to uninstall."
exit 0;
}
Write-Output ($service | Format-List * -Force | Out-String)
if($service.Started)
{
Write-Output "Stopping service..."
$opResult = $service.StopService()
if($opResult.ReturnValue -ne 0)
{
Write-Error ("Service does not stop. Return value is {0}.{1}" -f $opResult.ReturnValue, $opResultStr)
exit 1;
}
Write-Output ("Service stopped:{0}" -f $opResultStr)
}
Write-Output "Deleting service..."
$opResult = $service.Delete()
$opResultStr = "{0}{1}" -f [System.Environment]::NewLine, ($opResult | Format-List * -Force | Out-String)
if($opResult.ReturnValue -ne 0)
{
Write-Error ("Service does not delete. Return value is {0}.{1}" -f $result.ReturnValue, $opResultStr)
exit 1;
}
Write-Output ("Service deleted:{0}" -f $opResultStr)