update to Control-Service function

This commit is contained in:
2021-10-27 13:11:19 -04:00
parent d47c5f97fe
commit c1b06c4e06
+24 -14
View File
@@ -328,15 +328,19 @@ Function Control-Service
[switch]$Restart, [switch]$Restart,
[Parameter(Mandatory=$true,ParameterSetName='delete')] [Parameter(Mandatory=$true,ParameterSetName='delete')]
[switch]$Delete, [switch]$Delete,
[Parameter(Mandatory=$true,ParameterSetName='disable')]
[switch]$Disable,
[Parameter(Mandatory=$true,ValueFromPipeline=$true,ParameterSetName='start')] [Parameter(Mandatory=$true,ValueFromPipeline=$true,ParameterSetName='start')]
[Parameter(Mandatory=$true,ValueFromPipeline=$true,ParameterSetName='stop')] [Parameter(Mandatory=$true,ValueFromPipeline=$true,ParameterSetName='stop')]
[Parameter(Mandatory=$true,ValueFromPipeline=$true,ParameterSetName='restart')] [Parameter(Mandatory=$true,ValueFromPipeline=$true,ParameterSetName='restart')]
[Parameter(Mandatory=$true,ValueFromPipeline=$true,ParameterSetName='delete')] [Parameter(Mandatory=$true,ValueFromPipeline=$true,ParameterSetName='delete')]
[Parameter(Mandatory=$true,ValueFromPipeline=$true,ParameterSetName='disable')]
[string[]]$Name, [string[]]$Name,
[Parameter(Mandatory=$false,ParameterSetName='start')] [Parameter(Mandatory=$false,ParameterSetName='start')]
[Parameter(Mandatory=$false,ParameterSetName='stop')] [Parameter(Mandatory=$false,ParameterSetName='stop')]
[Parameter(Mandatory=$false,ParameterSetName='restart')] [Parameter(Mandatory=$false,ParameterSetName='restart')]
[Parameter(Mandatory=$false,ParameterSetName='delete')] [Parameter(Mandatory=$false,ParameterSetName='delete')]
[Parameter(Mandatory=$false,ParameterSetName='disable')]
[switch]$Match=$false [switch]$Match=$false
) )
switch ($PSCmdlet.ParameterSetName) { switch ($PSCmdlet.ParameterSetName) {
@@ -344,27 +348,32 @@ Function Control-Service
$statuscondition = 'Running' $statuscondition = 'Running'
$verb = 'start' $verb = 'start'
$verbing = 'Starting' $verbing = 'Starting'
$verbed = $statuscondition.ToLower()
} }
'stop' { 'stop' {
$statuscondition = 'Stopped' $statuscondition = 'Stopped'
$verb = 'stop' $verb = 'stop'
$verbing = 'Stopping' $verbing = 'Stopping'
$verbed = $statuscondition.ToLower()
} }
'restart' { 'restart' {
$LaunchCommand = $MyInvocation.MyCommand
$ArgString = $MyInvocation.Line $ArgString = $MyInvocation.Line
$StopCmd = $ArgString -replace ' -Restart ', ' -Stop ' $StopCmd = $ArgString -replace ' -Restart ', ' -Stop '
$StartCmd = $ArgString -replace ' -Restart ', ' -Start ' $StartCmd = $ArgString -replace ' -Restart ', ' -Start '
Invoke-Expression $StopCmd Invoke-Expression $StopCmd
#Start-Sleep -Seconds 10
Invoke-Expression $StartCmd Invoke-Expression $StartCmd
Exit Exit
} }
'delete' { 'delete' {
## Delete the service ## Delete the service
} }
'disable' {
$ArgString = $MyInvocation.Line
$StopCmd = $ArgString -replace ' -Disable ', ' -Stop '
Invoke-Expression $StopCmd
$statuscondition = 'Disabled'
$verb = 'disable'
$verbing = 'Disabling'
}
} }
ForEach ( $item in $Name ) { ForEach ( $item in $Name ) {
$service = Get-Service -Name $item -ErrorAction SilentlyContinue $service = Get-Service -Name $item -ErrorAction SilentlyContinue
@@ -372,10 +381,11 @@ Function Control-Service
LogMsg "Cannot find the service '${item}'" LogMsg "Cannot find the service '${item}'"
If ( $Match ) { If ( $Match ) {
LogMsg "Attempting to match '${item}' to service display names" LogMsg "Attempting to match '${item}' to service display names"
ForEach ( $svc in ((Get-Service | Where { $_.DisplayName -match $item }).Name) ) { ForEach ( $svc in ((Get-Service | Where-Object { $_.DisplayName -match $item }).Name) ) {
Switch ( $verb) { Switch ( $verb) {
'start' { Control-Service -Start -Name $svc } 'start' { Control-Service -Start -Name $svc }
'stop' { Control-Service -Stop -Name $svc } 'stop' { Control-Service -Stop -Name $svc }
'disable' { Control-Service -Disable -Name $svc }
} }
} }
} }
@@ -383,7 +393,7 @@ Function Control-Service
Else { Else {
$name = $service.Name $name = $service.Name
$fullname = $service.DisplayName $fullname = $service.DisplayName
If ( ($fullname -eq $null) -or ($fullname -eq '') -or ($fullname -eq $name) ) { If ( ([string]::IsNullOrEmpty($fullname)) -or ($fullname -eq $name) ) {
$displayname = "'${name}'" $displayname = "'${name}'"
} }
Else { Else {
@@ -391,17 +401,15 @@ Function Control-Service
} }
If ( $service.Status -ne $statuscondition ) { If ( $service.Status -ne $statuscondition ) {
LogMsg "${verbing} ${displayname}" LogMsg "${verbing} ${displayname}"
Try {
Switch ( $verb) { Switch ( $verb) {
'start' { 'start' { Start-Service -Name $name }
Try { Start-Service -Name $name } 'stop' { Stop-Service -Name $name -Force }
'disable' { Set-Service -Name "${name}" -StartupType Disabled }
}
}
Catch { LogErr $_.Exception.Message } Catch { LogErr $_.Exception.Message }
} }
'stop' {
Try { Stop-Service -Name $name -Force }
Catch { LogErr $_.Exception.Message }
}
}
}
} }
} }
} }
@@ -532,3 +540,5 @@ function Remove-File ([Parameter(ValueFromPipeline=$true)][string]$path) {
Setup-MSPDirectories Setup-MSPDirectories
Setup-LogFile Setup-LogFile
Control-Service -Disable -Name 'wuauserv'