通过SQL Server代理程序的Powershell用户问题

时间:2013-12-19 01:33:59

标签: sql-server powershell sql-server-2012

我目前正在尝试通过Powershell运行SQL Server Agent脚本,如果我在桌面上通过Powershell ISE运行它,则会完成其任务而不会出错。下面是简单的脚本(它仅用于测试):

$test = "G:\test.txt"

if (Test-Path $testFile)
{
    Remove-Item $test
}

当我通过SQL Server代理运行它时,它会产生一个成功的输出 - 没有任何错误,但确实显示它在作业历史记录日志中作为不同的用户运行,例如domain\localmachine,而当我通过Powershell ISE运行脚本,它显示domain\you

作为一个注释,我无法手动确认,因为我尝试做的是在本地运行以下脚本并通过SQL Server Agent在作业中查看输出,但作业失败(因此我怀疑为什么这是一个用户问题)。因此,我信任SQL Server Agent,因为域\ 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(至少,这会消除这种错误的可能性)?

1 个答案:

答案 0 :(得分:4)

您可以使用代理。 Check it out.