Quando executo a seguinte linha de script localmente em uma máquina do SQL Server, ela é executada perfeitamente:
Backup-SqlDatabase -ServerInstance $serverName -Database $sqldbname -BackupFile "$($backupFolder)$($dbname)_db_$($addinionToName).bak"
$ serverName contém um nome abreviado da instância do SQL Server. O SQL Server é 2012, portanto, esses novos cmdlets funcionam como um encanto.
Por outro lado, quando estou tentando executar um backup de banco de dados de uma máquina do agente do TeamCity como esta (por meio do cmdlet Invoke-Command):
function BackupDB([String] $serverName, [String] $sqldbname, [String] $backupFolder, [String] $addinionToName)
{
Import-Module SQLPS -DisableNameChecking
Backup-SqlDatabase -ServerInstance $serverName -Database $sqldbname -BackupFile "$($backupFolder)$($dbname)_db_$($addinionToName).bak"
}
Invoke-Command -computername $SQLComputerName -Credential $credentials -ScriptBlock ${function:BackupDB} -ArgumentList $SQLInstanceName, $DatabaseName, $BackupDirectory, $BakId
resulta em um erro:
Failed to connect to server $serverName.
+ CategoryInfo : NotSpecified: (:) [Backup-SqlDatabase], ConnectionFailureException
+ FullyQualifiedErrorId : Microsoft.SqlServer.Management.Common.ConnectionFailureException,Microsoft.SqlServer.M
anagement.PowerShell.BackupSqlDatabaseCommand
Qual é a maneira correta de executar o cmdlet Backup-SqlDatabase remotamente?