Почему вы пытаетесь создать другой скрипт?
Просто проверьте сервис и сбросьте его, и вы уверены, что используете правильное имя сервиса.
Get-Service -ComputerName 'LabSQL01' -Name '*SQL*'
# Results
Status Name DisplayName
------ ---- -----------
Running MSSQLFDLauncher SQL Full-text Filter Daemon Launche...
Running MSSQLSERVER SQL Server (MSSQLSERVER)
Running SQLBrowser SQL Server Browser
Running SQLSERVERAGENT SQL Server Agent (MSSQLSERVER)
Running SQLTELEMETRY SQL Server CEIP service (MSSQLSERVER)
Running SQLWriter SQL Server VSS Writer
($SQLServiceStatus = Get-Service -ComputerName 'LabSQL01' -Name 'SQL Server Agent (MSSQLSERVER)')
$SQLServiceStatus.StartType
Automatic
$SQLServiceStatus.Status
Running
{Invoke-Command -ComputerName 'LabSQO01' -ScriptBlock {$SQLServiceStatus = Get-Service -ComputerName $env:COMPUTERNAME -Name 'SQL Server Agent (MSSQLSERVER)'
If ($SQLServiceStatus.Status -eq 'Running')
{Set-Service -Name $($SQLServiceStatus.Name) -StartupType Automatic -WhatIf}
Else{ Write-Warning -Message "$($SQLServiceStatus.Name) is already set to the current state" }}
* Обновление для OP *
Хорошо, тогда я не совсем уверен, почему forloop для одного компьютера, если у вас есть несколько серверов, на которые вы планируете ориентироваться, но для одной цели, как насчет.
New-Item -Path "\\$LabSQL01\c$\temp" -Name 'RestartSQLServices.ps1' -ItemType File
# Results
Directory: \\LabSQL01\c$\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 11/10/2018 3:39 PM 0 RestartSQLServices.ps1
Get-ChildItem -Path "\\$LabSQL01\c$\temp\RestartSQLServices.ps1"
# Results
Directory: \\LabSQL01\c$\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 11/10/2018 3:39 PM 0 RestartSQLServices.ps1
$ScriptContents = @'
$SQLServiceStatus = Get-Service -ComputerName $env:COMPUTERNAME -Name 'SQL Server Agent (MSSQLSERVER)'
If ($SQLServiceStatus.Status -eq 'Running')
{Set-Service -Name $($SQLServiceStatus.Name) -StartupType Automatic -WhatIf}
Else{ Write-Warning -Message "$($SQLServiceStatus.Name) is already set to the current state" }
'@
Add-Content -Path "\\$LabSQL01\c$\temp\RestartSQLServices.ps1" -Value $ScriptContents
Get-Content -Path "\\$LabSQL01\c$\temp\RestartSQLServices.ps1"
# Results
$SQLServiceStatus = Get-Service -ComputerName $env:COMPUTERNAME -Name 'SQL Server Agent (MSSQLSERVER)'
If ($SQLServiceStatus.Status -eq 'Running')
{Set-Service -Name $($SQLServiceStatus.Name) -StartupType Automatic -WhatIf}
Else{ Write-Warning -Message "$($SQLServiceStatus.Name) is already set to the current state" }
Get-ChildItem -Path "\\$LabSQL01\c$\temp\RestartSQLServices.ps1"
# Results
Directory: \\LabSQL01\c$\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 11/10/2018 3:45 PM 273 RestartSQLServices.ps1
Конечно, его можно легко настроить для нескольких целей.