すべてのSQL ServerインスタンスでSQL Agentサービスをリモートで再起動しようとしています。 CSVファイルにリストされている各サーバーのローカル管理者権限を持つアカウントにログインしているときに、開発サーバーのいずれかから次のスクリプトを実行します。このファイルには、この開発サーバーとリモートの両方にあるすべてのSQLインスタンスのHostNameとInstanceNameが含まれています。すべてがSQL Server 2008 R2または2012のいずれかを実行しているWindows Server 2008 R2または2012です。PowerShellは管理者として実行されています。リモートコンピュータのRestart-Serviceが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
は有効-Remotingを前に、各サーバー上でローカルに実行されていました。
Get-Serviceはサービス名を表示できますが、Restart-Serviceはサービスが存在しないと主張するのはなぜですか。アクセス許可の問題である必要があるように感じますが、解決方法はわかりません。何か案は?
ありがとうございました!それがトリックでした。 –