<#Created By Abhishek Bansal
Read Note
Script Usage :: Menu driven script for Starting, Stoping and fetching specific service from servers mentioned in a text file.
Pre requisites :: Copy all the code into a text file, save it with an extension ".PS1". On same location create a text file named "Input.txt" which contains Server names. Once saved, run script as Administrator.
Execution & Outputs :: During execution it will first prompt to provide Service name and afterwards a prompt to choose if we want to Start, Stop or fetch service status from Servers. Once executed Output will be saved in separate ".csv files".#>
function startservice{
[CmdletBinding()]
param(
[parameter()]
[String] $server,$service
)
$error.Clear()
try{
Invoke-Command -ComputerName $server -ErrorAction Stop -ScriptBlock{Start-Service -Name $using:service -PassThru}
Invoke-Command -ComputerName $server -ScriptBlock{Get-Service -Name $using:service} | Select-Object -Property @{n="Hostname";e={$server}},Name,Displayname,Status | Export-Csv ./Startservices.csv -Append -NoTypeInformation
}
catch{
$server | Select-Object -Property @{n="Hostname";e={$server}},@{n="Name";e={"NA"}},@{n="Displayname";e={"NA"}},@{n="Status";e={$error.exception.Message}} | Export-Csv ./Startservices.csv -Append -NoTypeInformation
}
}
function stopservice{
[CmdletBinding()]
param(
[parameter()]
[String] $server,$service
)
$error.Clear()
try{
Invoke-Command -ComputerName $server -ErrorAction Stop -ScriptBlock{Stop-Service -Name $using:service -Force -PassThru}
Invoke-Command -ComputerName $server -ScriptBlock{Get-Service -Name $using:service} | Select-Object -Property @{n="Hostname";e={$server}},Name,Displayname,Status | Export-Csv ./Stopservices.csv -Append -NoTypeInformation
}
catch{
$server | Select-Object -Property @{n="Hostname";e={$server}},@{n="Name";e={"NA"}},@{n="Displayname";e={"NA"}},@{n="Status";e={$error.exception.Message}} | Export-Csv ./Stopservices.csv -Append -NoTypeInformation
}
}
function fetchservice{
[CmdletBinding()]
param(
[parameter()]
[String] $server,$service
)
$file = "Servicestatus_"+".csv"
$error.Clear()
try{
Invoke-Command -ComputerName $server -ErrorAction Stop -ScriptBlock{Get-Service -Name $using:service} | Select-Object -Property @{n="Hostname";e={$server}},Name,Displayname,Status | Export-Csv ./$file -Append -NoTypeInformation
}
catch{
$server | Select-Object -Property @{n="Hostname";e={$server}},@{n="Name";e={"NA"}},@{n="Displayname";e={"NA"}},@{n="Status";e={$error.exception.Message}} | Export-csv ./$file -Append -NoTypeInformation
}
}
$inputsrv = Get-content ./Input.txt
$service = Read-Host "Enter Service name = "
Write-Host "`nPress 1 to Start $service on servers mentioned in Input.txt.
Press 2 to Stop $service on servers mentioned in Input.txt.
Press 3 to fetch services status on servers mentioned in Input.txt "
$choice = Read-Host "Provide choice = "
foreach($server in $inputsrv)
{
$server = $server.trim()
if($choice -eq 1)
{
startservice -server $server -service $service
}
elseif($choice -eq 2)
{
stopservice -server $server -service $service
}
elseif($choice -eq 3)
{
fetchservice -server $server -service $service
}
else
{
Write-Host "Invalid Choice.."
}
}
No comments:
Post a Comment