Hello, having some trouble getting a service to start on multiple servers. I can get the script to work using the stop command but fore some reason my start script will only start the service on the first server in the array. What is also puzzling is that
the command to set the service to auto start changes from manual to auto per the script on both servers.
Powershell info:
Major Minor Build Revision
----- ----- ----- --------
2 0 -1 -1
Working stop script: (Stops the service on both servers in the array)
Clear-Host
Write-Host ""
Write-Host ""
Write-Host "==================================================================="
Write-Host ">>> Capture 2 Citrix Servers"
Write-Host "==================================================================="
# Array of target servers
[array]$Servers = "Testserver1","Testserver2"
# Array of services for actions
[array]$Services = "IMAService"
# Array of processes associated with services
[array]$Processes = "ImaSrv"
# Create the Powershell session(s) for each server
$Session = New-PSSession -ComputerName $Servers
# Set the services to Manual so they don't auto restart
Write-Host ""
Write-Host "==> Setting the startup type of services to 'Manual'..."
foreach ($Service in $Services)
{
Set-Service -Name $Service -ComputerName $Servers -Verbose -PassThru -ErrorAction Continue -StartupType Manual
}
# Stop each service
Write-Host ""
Write-Host "==> Stopping services..."
foreach ($Service in $Services)
{
$svc = Get-Service -Name $Service -ComputerName $Servers -Verbose -ErrorAction Continue
Stop-Service -InputObject $svc -force -Verbose -PassThru -ErrorAction Continue
}
# Try to kill any processes still running
Write-Host ""
Write-Host "==> Trying to stop the associated processes..."
foreach ($Process in $Processes)
{
$wmi = Get-WmiObject -Class Win32_Process -ComputerName $Servers -Filter "Name = '$Process.exe'" -ErrorAction Continue
if ($wmi) { Try { $wmi.Terminate() } Catch { Write-Host "ERROR: Unable to terminate '$wmi.Name'" } }
}
# Close the remote sessions
Remove-PSSession -ComputerName $Servers
Write-Host "==> Done for $Servers"
Write-Host ""
Write-Host ""
Non working start service script (Only starts the service on the first server in the array but sets the service to auto start on both servers)
Clear-Host
Write-Host ""
Write-Host ""
Write-Host "==================================================================="
Write-Host ">>> Capture Start Citrix Servers"
Write-Host "==================================================================="
# Array of target servers
[array]$Servers = "Testserver1","Testserver2"
# Array of services for actions
[array]$Services = "IMAService"
# Create the Powershell session(s) for each server
$Session = New-PSSession -ComputerName $Servers
# Set the services to Automatic
Write-Host ""
Write-Host "==> Setting the startup type of services to 'Automatic'..."
foreach ($Service in $Services)
{
Set-Service -Name $Service -ComputerName $Servers -Verbose -PassThru -ErrorAction Continue -StartupType Automatic
}
# Start each service
Write-Host ""
Write-Host "==> Starting services..."
foreach ($Service in $Services)
{
$svc = Get-Service -Name $Service -ComputerName $Servers -Verbose -ErrorAction Continue
Start-Service -InputObject $svc -Verbose -PassThru -ErrorAction Continue
}
# Close the remote sessions
Remove-PSSession -ComputerName $Servers
Write-Host "==> Done for $Servers"
Write-Host ""
Write-Host ""
Thanks for any and all suggestions!