C#运行PowerShell(BeginInvoke)尝试Copy-Item:ACCESS DENIED

时间:2014-07-03 01:05:04

标签: c# powershell

用户:谁是ADMIN(或拥有权限)运行C#-IIS应用程序,运行PowerShell(通过新的PowerShell.Create(),Script()和ps.BeginInvoke)。

PS脚本将Copy-Item从一个本地文件夹复制到一个联网文件夹(用户拥有权限)。事实上,为了进行测试,我将'Everyone'设置为拥有权限(因此它可能不是IIS_IUSRS)。

结果:“访问被拒绝”错误。

我该如何解决这个问题?

背景:

  1. 无法显式运行powershell exe提升,因为我需要异步捕获详细和其他输出流。
  2. 只是为了好玩 - 尝试使用(新模仿(...)){...}。但正如预期的那样,我已经以自己/管理员身份运行 - 没有变化。
  3. 当我转储用户名时(Write-Verbose“Running as $ env:username”) - 我得到了机器名称(后面跟着美元符号) - 如果有帮助的话。
  4. 谢谢,

1 个答案:

答案 0 :(得分:0)

我将假设您正在运行IIS 7.5。对我来说,听起来应用程序池运行时标识设置为ApplicationPoolIdentity。将其更改为NetworkService(或显式域帐户)应该可以解决问题。

从IIS管理器中,转到“应用程序池”,确定托管站点的应用程序池,单击鼠标右键,然后选择“高级设置”。您将在流程模型部分下找到身份。