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!
我正在尝试 运行 虚拟机上的 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!