"-ErrorAction SilentlyContinue" çözümünü kullandım, ancak daha sonra arkasında bir Hata Kaydı bırakan sorunla karşılaştım. İşte "Get-Service" kullanarak Hizmetin var olup olmadığını kontrol etmenin başka bir çözümü.
Function ServiceExists([string] $ServiceName) {
[bool] $Return = $False
if ( Get-Service "$ServiceName*" -Include $ServiceName ) {
$Return = $True
}
Return $Return
}
[bool] $thisServiceExists = ServiceExists "A Service Name"
$thisServiceExists
Ancak ravikanth en iyi çözüme sahiptir çünkü Get-WmiObject, Servis yoksa bir hata vermeyecektir. Bu yüzden kullanmaya karar verdim:
Function ServiceExists([string] $ServiceName) {
[bool] $Return = $False
if ( Get-WmiObject -Class Win32_Service -Filter "Name='$ServiceName'" ) {
$Return = $True
}
Return $Return
}
Yani daha eksiksiz bir çözüm sunmak için:
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
}