2013-12-19 2 views
0

В настоящее время я пытаюсь запустить сценарий 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 (по крайней мере, это позволит устранить эту возможность ошибки)?

+0

Вы можете использовать параметр -Credential для remove-item, но это связано с сохранением набора учетных данных в скрипте процедуры. – mjolinor

+0

Есть ли опечатка здесь? Текст ошибки говорит 'SQLSERVER: \ psaved.txt', но ваш скрипт указывает' pssaved.txt'. –

+0

@KeithHill Да, мой плохой. – Question3CPO

ответ

4

Вы можете использовать прокси для этого. Check it out.

+0

Это работает для создания прокси (и эта ссылка помогает: http://www.mssqltips.com/sqlservertip/1199/sql-server-agent-proxies/), и она будет выполняться как соответствующая учетная запись. К сожалению, это все равно не удалит локальный файл, так что по-прежнему искать эту проблему. – Question3CPO

Смежные вопросы