我有一个带有一些表和触发器的SQL Server数据库,触发器将在ServerA上创建FolderA或在ServerB上创建FolderB,这是我在ServerA的触发器中传递的命令:
SET @folder = 'powershell.exe invoke-command -computername ServerA { powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\FolderScript\FolderA.ps1 "' +@folderName+'" }'
EXEC master.dbo.xp_cmdshell @folder
我有一个间歇性的问题,它会停止工作几天,然后我必须从ServerA上的PS手动运行它。
因为它是间歇性的,那么我们可以排除防火墙,权限,PowerShell启用远程。我有一个基于Web的应用程序(asp.net),用户从他们的机器运行它并连接到触发器所在的SQL Server数据库。
是否有某种会话需要保持开放以防止访问被拒绝错误?我想不出任何可能导致这个问题的事情?
我怀疑问题出在您的命令中发生的引用:
SET @folder = 'powershell.exe -Command "Invoke-Command -ComputerName ServerA { & ''C:\FolderScript\FolderA.ps1'' ' + @folderName + ' }"'
这应该足以解决您的问题。您不需要重复调用powershell.exe
,因为您可以使用调用运算符(&
)本机调用脚本。