我目前正在尝试通过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(至少,这会消除这种错误的可能性)?