В настоящее время я пытаюсь запустить сценарий Powershell
через SQL Server Agent
, который завершает свою задачу без ошибок, если я запустил ее через Powershell ISE
на рабочем столе. Простой скрипт ниже (он используется только для тестирования):Проблема пользователя Powershell с помощью агента SQL Server
$test = "G:\test.txt"
if (Test-Path $testFile)
{
Remove-Item $test
}
Когда я запускаю это через агент SQL Server, он создает успешный вывод - никаких ошибок бы то ни было, но показывает, что это время работают как другие пользователь в журнале истории заданий, например domain\localmachine
, тогда как когда я запускаю скрипт через PowerShell ISE, он показывает domain\you
.
В качестве примечания я не могу подтвердить это вручную, поскольку то, что я пытался сделать, это запустить сценарий ниже как локально, так и через агента SQL Server в задании, чтобы увидеть результат, но работа не удалась (и, следовательно, почему я Подозреваю, что это проблема пользователя). Поэтому я доверяю агенту SQL Server, поскольку в домене \ locallmachine выполняется задание (причина, по которой он не удалит файл).
([Environment]::UserDomainName + "\" + [Environment]::UserName) | out-file pssaved.txt
"$env:userdomain\$env:username" | out-file -append pssaved.txt
[Security.Principal.WindowsIdentity]::GetCurrent().Name | out-file -append pssaved.txt
## Locally this produces domain\you
## On SQL Server Agent, I receive the error: The error information returned by PowerShell is: 'SQL Server PowerShell provider error: Path SQLSERVER:\pssaved.txt does not exist. Please specify a valid path.'
Есть ли способ, с помощью агента SQL Server для запуска задания в качестве моего домена пользователя для домена экземпляра \ вы вместо того, чтобы домен \ LocalMachine (по крайней мере, это позволит устранить эту возможность ошибки)?
Вы можете использовать параметр -Credential для remove-item, но это связано с сохранением набора учетных данных в скрипте процедуры. – mjolinor
Есть ли опечатка здесь? Текст ошибки говорит 'SQLSERVER: \ psaved.txt', но ваш скрипт указывает' pssaved.txt'. –
@KeithHill Да, мой плохой. – Question3CPO