【发布时间】:2016-09-28 21:50:32
【问题描述】:
我正在尝试在我的所有 SQL Server 实例上远程重新启动 SQL 代理服务。我从我的一个开发服务器运行以下脚本,同时登录到一个帐户,该帐户在 CSV 文件中列出的每个服务器上都具有本地管理员权限。该文件包含我的所有 SQL 实例的主机名和实例名,包括此开发服务器和远程服务器。所有都是 Windows Server 2008R2 或 2012,运行 SQL Server 2008R2 或 2012。PowerShell 正在以管理员身份运行。
$Servers = Import-CSV C:\Temp\InstanceList.csv
ForEach ($Line In $Servers)
{
$sqlHostName = $Line.hostName
$sqlInstanceName = if ($Line.instanceName -eq "") {$Line.instanceName} else {("$" + $Line.instanceName)}
$serviceName = if ($sqlInstanceName -eq "") {"SQLSERVERAGENT"} else {"SQLAgent" + $sqlInstanceName}
Get-Service -computer $sqlHostName ($serviceName)
Get-Service -computer $sqlHostName ($serviceName) | Restart-Service
}
它在本地机器的实例上成功,但在远程实例上失败。这是我看到的远程默认实例的错误。第一行显示我有正确的服务名称,下一行声称它不存在:
Running SQLSERVERAGENT SQL Server Agent (MSSQLSERVER)
Restart-Service : Cannot find any service with service name 'SQLSERVERAGENT'.
At line:11 char:70
+ Get-Service -computer $sqlHostName ($serviceName) | Restart-Service <<<<
+ CategoryInfo : ObjectNotFound: (SQLSERVERAGENT:String) [Restart-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.RestartServiceCommand
Enable-Remoting 之前已在每台服务器上本地运行。
为什么 Get-Service 能够显示服务名称,但 Restart-Service 却声称该服务不存在。感觉这一定是权限问题,但我不知道如何解决它。有什么想法吗?
【问题讨论】:
标签: service sql-server-2008-r2 powershell-2.0 windows-server-2008-r2 restart