在SQL Server代理中运行PowerShell脚本不起作用

时间:2017-10-24 23:16:55

标签: powershell sql-server-2012 sql-agent-job

我有一个SQL Server代理作业,它运行PowerShell脚本从数据库中提取数据并将其保存在csv文件中。

作业类型设置为PowerShell,命令如下所示:

$sql=@'exec my_stored_procedure'@
$result = Invoke-Sqlcmd -ServerInstance INSTANCE_NAME -Database DBNAME -Query $sql
#The first row gets removed and then save it to a csv file
$result | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1 | Set-Content \\SERVER\c$\Folder\file.csv

当我运行此作业时,它成功运行,但未在指定位置创建file.csv

我检查了工作经历并说:

  

作业脚本遇到以下错误。这些错误没有   停止脚本:(.....)相应的行是$result | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1 | Set-Content \\SERVER\c$\Folder\file.csv。更正脚本并重新安排   工作。 PowerShell返回的错误信息为'Cannot use interface. The IContentCmdletProvider interface is not implemented by this provider.'。处理退出代码0。

有人可以帮我理解我错过的内容吗? 这是我的第一个PowerShell项目,所以我可能错过了对其他人来说很明显的东西..?

1 个答案:

答案 0 :(得分:0)

由于路径中的服务器名称,它似乎在抱怨。

我最初有:

ConvertTo-Csv -NoTypeInformation | 
    Select-Object -Skip 1 | 
    Set-Content  \\SERVER\c$\Folder\file.csv

但是CD到目录并指定文件就可以了:

$directoryPath = "C:\Folder"
cd $directoryPath
ConvertTo-Csv -NoTypeInformation | 
    Select-Object -Skip 1 | 
    Set-Content  C:\Folder\file.csv