我想从C#应用程序运行PowerShell脚本,并且需要脚本在我的C#应用程序以非管理员用户身份运行时运行(例如网络服务或其他域帐户)。如何从C#运行PowerShell脚本作为非升级用户
以前,我用的是下面的代码:(!请教我,如果有一个更好的办法)
using (RunspaceInvoke invoker = new RunspaceInvoke())
{
// load the powershell module
invoker.Invoke("Import-Module MyModule");
// run the cmdlet defined in the module
invoker.Invoke("MyCmdlet");
}
我不知道这是否是运行的模块中定义的cmdlet的最佳方法。在任何情况下,如果我以管理用户身份运行,此功能完美无缺。然而,我试图运行这个网络服务,并且我在RunspaceInvoke的构造函数中遇到了一个不友好的错误:
不允许请求的注册表访问。
有没有一种方法可以将我的PowerShell cmdlet作为未提升的用户(例如网络服务)运行?我不需要或不想访问注册表。该cmdlet本身也不需要提升特权。
谢谢,但我不想提升或模仿。我试图将PowerShell脚本作为*低权限*用户运行,而不是高权限用户。 – 2010-02-14 17:34:49