Powershell/taskscheduler 权限

Powershell/taskscheduler permissions

我正在尝试 运行 虚拟机上的 TaskScheduler 任务。问题是,当我将安全选项设置为具有最高权限的 "Run whether user is logged on or not," 时(所选用户帐户是域管理员),任务失败。我的 PowerShell 脚本将临时 XLSX 文件写入 C: 中的文件夹,并在上传到 FTP 站点后立即将其删除。我遇到远程计算机无法将文件保存到 C: 的权限问题。

我花了几个小时在谷歌上搜索这个问题,到目前为止我还没有找到可靠的答案。

我的 TaskScheduler 任务位于虚拟机的管理员帐户中。当安全选项设置为 "Run only when user is logged on."

时不会失败

有没有人有什么想法?


我试图通过启用 PSRemoting 并使用具有管理员凭据的单独计算机来进行远程访问。即使这样,我也无法使用 workbook.saveas() 函数创建任何 excel 文件。


我详细说明了我从脚本中收到的消息。

Debug Log: 02/06/2015 14:31:19
C:\Users\SQLADMIN\Desktop
Exception calling "InvokeScript" with "1" argument(s): "Unable to save to 
C:\Users\SQLADMIN\Desktop\FTP_MYS_Upload\ExhibitorCompaniesDetails.xlsx. 
Please ensure you have write access."
At C:\Users\SQLADMIN\Desktop\FTP_MYS_Upload\Export-XLSX with Excel.ps1:168 
char:13
+             $ExecutionContext.InvokeCommand.InvokeScript($Script)
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : RuntimeException

Exception calling "InvokeScript" with "1" argument(s): "Unable to save to 
C:\Users\SQLADMIN\Desktop\FTP_MYS_Upload\ExhibitorCompaniesExpoHistory.xlsx. 
Please ensure you have write access."
At C:\Users\SQLADMIN\Desktop\FTP_MYS_Upload\Export-XLSX with Excel.ps1:168 
char:13
+             $ExecutionContext.InvokeCommand.InvokeScript($Script)
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : RuntimeException

"Unable to save to DIR. Please ensure you have write access" 是我创建 XLSX 脚本中 .saveas() 方法的尝试捕获。

我可以远程输出文件,本质上是创建一个 txt 文档,但我不能使用 .saveas() 方法。有任何想法吗?跟Excel/Powershell有关系吗?


看起来像是一个 dotNet 问题。 dotNet 在远程调用 Excel 时表现不佳。我会进一步调查。

我会尝试一种解决方法,并通过不将文件直接保存到 c:\ 而是保存到 \\PCname\c$ 来使系统在远程 PC 上保存文件,如果它是跨域环境,则将使用计算机的\\FQDN\c$

您是否尝试过将选定的用户帐户添加到本地用户组? (转到计算机管理、本地用户和组、组、用户并在该组中添加帐户)。 根据您的安全设置,您可能还需要将他添加到本地管理员组(但我怀疑是否有必要简单地创建一个文件)。

确保服务 "Secondary Logon" 是 运行。

确保您的 "log on as batch" 本地安全策略正确: https://social.technet.microsoft.com/Forums/windowsserver/en-US/760ee186-8074-40a5-95b0-35d17c2bdfab/log-on-as-batch-job-right

如果一切正常,请通过执行以下操作以用户身份测试脚本:

runas /user:yourdomain\yourusername cmd.exe

经过两个月的努力找出问题所在....我在 TechDecode.com...

上找到了一篇文章

http://www.techdecode.com/wp/?p=58

为了连贯性,我将把文字复制到这里。

我所要做的就是授予自己以下权限: C:\Windows\SysWOW64\config\systemprofile\Desktop

我希望这对下一个人有帮助。

Gotcha! – Office 2007 Automation with Powershell in Windows 2008

It seems MS has changed the game again on Office automations with Office 2007 and Windows 2008 and/or Windows 7 and Powershell scripts. I do quite a bit of Powershell scripting and found that after upgrading my script host to 2008 R2, my scripts scheduled in Task Manager no longer worked. I pulled out my hair for a few days trying all kinds of different things – changing paths, permissions, syntax – you name it, I tried it. I kept getting this error message –

Exception calling “SaveAs” with “1” argument(s): “SaveAs method of Workbook class failed”

After Googling for the hundreth time or so, I finally stumbled across this post on the Social MSDN Forums. I could not believe it that when I simply added a folder to the server, it all worked! This is the folder you need to add (Thank you H Ogawa for your posting!) – ・Windows 2008 Server x64 Please make this folder. C:\Windows\SysWOW64\config\systemprofile\Desktop

・Windows 2008 Server x86 Please make this folder. C:\Windows\System32\config\systemprofile\Desktop

Frustrating, but fixed!