stop or start a service on remote machine

前端 未结 3 1134
自闭症患者
自闭症患者 2021-01-16 16:36

I created a script that will start or stop a service based on it\'s display name. My script works on the local machine but I would like to make sure that it can be done on a

3条回答
  •  攒了一身酷
    2021-01-16 16:45

    Assuming that you have not disabled PowerShell remoting, the easiest way to do it is to wrap it in a function with ComputerName as an optional parameter, and then use Invoke-Command and splat PSBoundParameters.

    Function Toggle-Service{
    [cmdletbinding()]
    Param([string[]]$ComputerName)
    $serviceName = Read-Host -Prompt 'Please enter service name: '
    
    # Check that service name exists
    If (Invoke-Command -ScriptBlock {Get-Service $serviceName -ErrorAction SilentlyContinue} @PSBoundParameters) 
    {
    
    # Check that service name is not empty
    if([string]::IsNullOrEmpty($serviceName)) 
    {            
        Write-Host "Service name is NULL or EMPTY"            
    } 
    else 
    {            
    
    
    $Choice =  Read-Host -Prompt 'Would you like to start or stop the service'
    
    #Start service
    If ($Choice -eq 'start') {
    
    Invoke-Command -ScriptBlock {Start-Service -displayname $serviceName} @PSBoundParameters
    
    Write-Host $serviceName "Starting..." -ForegroundColor Green 
    }
    
    #Stop service
    If ($Choice -eq 'stop') {
    
      Invoke-Command -ScriptBlock {Stop-Service -displayname $serviceName} @PSBoundParameters
    
      Write-Host $serviceName "Stopping..." -ForegroundColor Green
    }
     }
      }
    else {            
        Write-Host "Service name does not exist"            
    }
    }
    

    Then you can call Toggle-Service without a parameter to perform it locally, or include the name of a remote server to perform the actions on that server.

提交回复
热议问题