我试图远程重新启动所有SQL Server实例上的SQL Agent服务。我从一台开发服务器运行以下脚本,同时登录到在CSV文件中列出的每台服务器上具有本地管理员权限的帐户。该文件包含我的所有SQL实例的HostName和InstanceName,都位于此开发服务器和远程计算机上。所有都是Windows Server 2008 R2或2012,运行SQL Server 2008 R2或2012.PowerShell正在以管理员身份运行。在远程计算机上重新启动服务会导致NoServiceFoundForGivenName,但Get-Service可以运行
$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
启用,远程处理先前已在当地每台服务器上运行。
为什么Get-Service能够显示服务名称,但是Restart-Service声称该服务不存在。感觉它一定是一个权限问题,但我不知道如何解决它。有任何想法吗?
谢谢德鲁!那就是诀窍。 –