我有一个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项目,所以我可能错过了对其他人来说很明显的东西..?
答案 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