通过SQL Server作业运行Powershell

通过SQL Server作业运行Powershell,sql,sql-server,powershell,database-administration,Sql,Sql Server,Powershell,Database Administration,我有一个非常基本的脚本,可以在本地PC上运行。它只需备份一些文件夹及其内容,然后在文件夹名称上添加日期戳 该脚本备份两个不同服务器(Server2和Server3)上的文件夹 它在以下环境中完美运行这两个部分: 在我的本地PC上 当我远程连接到服务器2并右键单击>使用PowerShell运行时 当我远程连接到服务器2并编辑>运行脚本时 但是,当我尝试自动执行此操作并创建SQLServer代理作业(同样,在Server2上)时,实际上只有第2部分进行了备份。作业成功完成,但第1部分似乎被忽略(

我有一个非常基本的脚本,可以在本地PC上运行。它只需备份一些文件夹及其内容,然后在文件夹名称上添加日期戳

该脚本备份两个不同服务器(Server2和Server3)上的文件夹

它在以下环境中完美运行这两个部分:

  • 在我的本地PC上
  • 当我远程连接到服务器2并右键单击>使用PowerShell运行时
  • 当我远程连接到服务器2并编辑>运行脚本时
但是,当我尝试自动执行此操作并创建SQLServer代理作业(同样,在Server2上)时,实际上只有第2部分进行了备份。作业成功完成,但第1部分似乎被忽略(即在服务器2上运行,在服务器3上备份)

你知道为什么作为SQL作业运行会导致这种情况吗

n、 b.作业设置为以“SQL Server代理服务帐户”运行。

两件事

如果将PS脚本作为步骤类型操作系统(CmdExec)运行,则永远不会向SQL Server作业返回错误消息


话虽如此,如果您的SQL Server代理服务帐户无权访问\Server3。。。文件夹,复制将失败,如上所述,不会向调用的SQL代理作业传输任何错误消息。

是否可能是您或服务代理帐户无权访问服务器3上的文件夹?运行作业的用户。。。是否对\\Server3具有权限?
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned

#Part 1
Copy-Item -Path "\\Server3\Example Location" -Destination "\\Server3\Example Location_$(get-date -f yyyyMMdd)" -Recurse

#Part 2
Copy-Item -Path "\\Server2\Example Location" -Destination "\\Server2\Example Location_$(get-date -f yyyyMMdd)" -Recurse