Не удается найти путь сценария Powershell в агенте SQL Server
Я искал весь интернет и stackOF, чтобы решить эту проблему. Я пытаюсь автоматизировать восстановление БД с помощью агента SQL Server. Задание агента сервера sql состоит из четырех этапов, 3 из которых - это tsql, а другой - сценарий powershell.
Я создал прокси-сервер с учетными данными администратора, чтобы скрипт мог запускаться от имени администратора.
cd c:;
$backuppath="Microsoft.PowerShell.Core\FileSystem::\\sharedcomputer\backup";
$destpath="c:\tmp\";
get-childitem -path $backuppath | where-object { -not $_.PSIsContainer } |
sort-object -Property $_.CreationTime |
select-object -last 1 | copy-item -Destination (join-path $destpath "byte.BAK");
Он копирует.bak-файл из исходной общей папки и помещает его в папку tmp на цели. Всякий раз, когда я запускаю это через обычный Powershell, он работает нормально. Всякий раз, когда я пытаюсь запустить это из агента сервера SQL, я получаю сообщение об ошибке, указывающее, что он не может найти путь.
Я даже пытался использовать net use для передачи учетных данных для общей папки. Я думаю, что это связано с тем, что в папке есть требование для учетных данных.
Я также отключил общий доступ к файлам паролей на исходном сервере, но по какой-то причине, когда я использую проводник Windows, чтобы найти общий файл, он все же сначала запрашивает учетные данные. После сохранения и кэширования я могу использовать PowerShell для перехода в эту папку. Но ничего из этого не работает, когда он выполняется из агента сервера SQL
1 ответ
Я смог наконец понять это с небольшой помощью парня из Windows Server... Возвращаясь к ответу на вопрос. Когда я создал прокси-агент, я использовал учетные данные, которые были связаны с текущей учетной записью домена, т.е. домен \ администратор.
Чтобы прокси-сервер мог подключаться к удаленному серверу, ему необходимо иметь учетные данные в этом домене. Поэтому я создал другую учетную запись домена на целевом и исходном серверах, используя те же имя и пароль, и дал ей разрешения на нужные мне папки.
Эта учетная запись использовалась в прокси-сервере, а учетные данные были установлены как. \AccountName, поэтому, поскольку подстановочный знак был на месте, прокси-сервер смог отскочить назад и перейти между двумя серверами и успешно передать файлы....
Надеюсь это поможет