Вам придется запрашивать сервис каждый раз, когда вы хотите получить статус, используя вторую строку вашего скрипта.Методы удаляются при сериализации, что происходит, когда объекты возвращаются с удаленного сервера.Каждый раз, когда вы хотите получить текущий статус этой службы, вам нужно будет запустить:
$server1 = Invoke-Command -ComputerName xxxxxxxxx -ArgumentList $servicename -ScriptBlock {Param($servicename) Get-Service -name $servicename} -Credential $cred
Или поместить все это в один блок сценариев и сделать все это на удаленном сервере.
$cred = Import-Clixml -path F:\Powershell\Safe\xxxxxxxx.txt
$SBlock = {
Param($servicename)
$Service = Get-Service -name $servicename
if ($Service.Status -eq "Running"){
"The Telephony service is started on xxxxxxxxx"
}
Else{
"The Telephony service is stopped on xxxxxxxxx, starting up service"
start-sleep -seconds 5
Start-Service -name $servicename
"Telephony service is starting xxxxxxxxx"
start-sleep -seconds 10
$Service.Refresh()
if ($server1.status -eq "Running"){
"Telephony service is now started on xxxxxxxxx"
}
else {
"The Telephony service failed to start on xxxxxxxxx please check services and try again."
}
}
}
Invoke-Command -ComputerName xxxxxxxxx -ArgumentList $servicename -ScriptBlock $SBlock -Credential $cred