У меня есть задание SQL, которое запускается через агент SQL Server (Запуск SQL Server 2012 Enterprise). Последний шаг работы - запустить приложение, расположенное в общей сетевой папке. К сожалению, я не знаю имя папки, в которой находится приложение (папка является номером версии), поэтому я использую PowerShell, чтобы найти его:
set-location "\\server\companydocuments\MyApp\Application Files\"
$name = Get-ChildItem | sort name -desc | select -f 1 | select name
cd $name.name
& ".\Application.exe"
Если я открою окно PowerShell на SQL Server, то оно будет работать нормально. Когда я запускаю это в агенте SQL Server, я получаю следующую ошибку:
A job step received an error at line 1 in a PowerShell script.
The corresponding line is 'set-location "\\server\companydocuments\MyApp\Application Files\'"
Я подумал, что это может быть проблема с разрешениями, поэтому я попробовал Агент SQL Server, работающий под моими учетными данными (это тестовый сервер, а не рабочий), но я все еще получаю ту же ошибку. Я также попытался сопоставить сетевой диск с общей папкой вместо путей UNC, но та же ошибка.
Кто-нибудь может подсказать, как можно подключиться к этой папке?
cd c:
в начале скрипта выполняется сортировка проблемы контекста / местоположения. Тогда все пути UNC работали как ожидалось.cd c:
это псевдоним для использованияSet-Location C:
, поэтому это та же команда.Другой альтернативой будет использование команды операционной системы и предоставление в качестве команды powershell.exe c: /path/script.ps1 и сохранение сценария в script.ps1. Это обеспечит использование PowerShell для ОС вместо поставщика.
источник